Lotus Notes Java API。邮件转发

时间:2014-05-06 18:17:46

标签: java email lotus-notes

我想将我的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;
        }
    }
}

3 个答案:

答案 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。 它是一个商业软件,但它完全符合我的需要。