[英]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.