[英]Lotus Notes Java API. Mail forwarding
我想将电子邮件从我的Lotus Notes收件箱转发到我的gmail帐户。
Lotus Notes规则和代理在我们的服务器上被禁用,因此我为此开发了外部应用程序。 我正在使用document.send方法,并且邮件成功到达了我的Gmail邮箱。 唯一的问题是,电子邮件经常也在我的Lotus Notes收件箱中重复。 我只是发现原因是我没有清理“ CC”和“ BCC”字段,但是,我正在寻找一种直接转发电子邮件的方式-这意味着保留原始CC,BCC和TO字段-与转发代理完全相同。
我在Windows 7 64位上使用“ IBM Notes 9”。
我已经准备了一个代码样本来演示我在做什么。
package com.example;
import lotus.domino.*;
public class TestMailForwarder {
public static void main(String[] args) throws NotesException {
NotesThread.sinitThread();
try {
Session notesSession = NotesFactory.createSession(
(String) null, (String) null, Consts.NOTES_PASSWORD);
DbDirectory dir = notesSession.getDbDirectory(Consts.NOTES_SERVER);
Database mailDb = dir.openDatabaseByReplicaID(Consts.MAILDB_REPLICA_ID);
forwardAllEmails(mailDb);
} finally {
NotesThread.stermThread();
}
}
private static void forwardAllEmails(Database mailDb) throws NotesException {
View inbox = mailDb.getView("$Inbox");
//noinspection LoopStatementThatDoesntLoop
for (Document document = inbox.getFirstDocument();
null != document;
document = inbox.getNextDocument(document)) {
document.send(Consts.GMAIL_ADDRESS);
break;
}
}
}
与其尝试将邮件发送到您的GMail,不如使用Gmail的IMAP界面上传邮件。 您可能需要将消息作为MIME内容获取-可能它们已经用于外部传入电子邮件,然后将其推送到GMail。 我没有现成的代码示例,仅一个相反的示例将GMail放入Notes ,但是您应该可以将其用作起点。
MIME转换的代码示例在IBM Technote中 。
希望能有所帮助
您不能对在客户端级别运行的代码进行透明转发。 纯SMTP系统通过保留RFC-822标头内容,同时更改RFC-821 RCPT TO数据来做到这一点。 Domino不会为客户级代码提供对这些代码的独立控制。 它仅使用SendTo,CopyTo和BlindCopyTo项目。 (做这些事情,邮件管理和归档供应商发挥了一些技巧,但是它们需要对Domino服务器的路由器配置以及另一端的软件进行特殊更改。
完成此操作的另一种方法(针对您在评论中提出的问题)是使Java代码直接与gmail SMTP服务器建立连接。 我不确定这有多容易。 关于此问题的评论指出,Java Mail API允许您与RFC822标头分开控制RCPT TO,但是除了注意有一个SMTPTransport类之外,我没有研究其他细节-这是我要在的地方寻找与RFC-821协议有关的任何内容。 更大的问题是,您将必须控制将邮件转换为MIME格式。 使用Notes邮件,您可能会混合使用Notes RTF和MIME。 在Notes 8.5.1及更高版本中有一个convertToMIME方法 ,但这只会转换消息正文。 您必须单独处理任何标题内容。 (我并没有真正加快Notes 9的速度,但是AFAIK即使将消息拖放到桌面时客户端中具有创建.EML文件的功能,也没有API可以为您做这件事。)
最后,我找到了一个可用的解决方案: AWESYNC.MAIL 。 它是一种商业软件,但确实可以满足我的需求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.