我想将我的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;
}
}
}
答案 0 :(得分:2)
为什么不使用Gmail的IMAP界面上传邮件,而不是尝试将邮件发送到您的GMail。您需要将消息作为MIME内容获取 - 可能它们已经用于外部传入电子邮件,然后将它们推送到GMail。 我没有准备好的代码示例,只有一个用于相反的pulling GMail into Notes,但您应该能够将其作为起点。
MIME转换的代码示例位于IBM Technote。
希望有所帮助
答案 1 :(得分:2)
在客户端级别运行代码时,无法进行透明转发。纯SMTP系统通过在更改RFC-821 RCPT TO数据时保留RFC-822标头内容来实现。 Domino不会对客户端级代码进行独立控制。它只使用SendTo,CopyTo和BlindCopyTo项。 (邮件管理和归档供应商为了做这样的事情有一些技巧,但它们需要对Domino服务器的路由器配置和另一端的软件进行特殊更改。
实现此目的的另一种方法(响应您在评论中提出的问题)将使您的Java代码与gmail SMTP服务器建立直接连接。我不确定它有多容易。对this question的评论指出,Java Mail API允许您单独控制RCPT TO与RFC822标头,但我没有考虑具体细节,除了注意到有一个SMTPTransport类 - 这是哪里我会寻找与RFC-821协议相关的任何内容。更大的问题是您必须控制将邮件转换为MIME格式。使用Notes邮件,您可能混合使用Notes富文本和MIME。在Notes 8.5.1及更高版本中有一个convertToMIME method,但这只会转换邮件正文。您必须单独处理任何标题内容。 (我并没有真正掌握Notes 9的速度,但AFAIK即使在将消息拖到桌面时客户端有功能创建.EML文件,也没有API可以为您做到这一点。)< / p>
答案 2 :(得分:0)
最后,我找到了一个现成的解决方案:AWESYNC.MAIL。 它是一个商业软件,但它完全符合我的需要。