您直接连接到邮件服务器的第一个选项实际上非常简单。
我们通过使用 JavaMail 登录到我们的 Exchange 服务器来做一些非常相似的事情:一个 Java 应用程序定期连接到 Exchange 并处理它找到的任何邮件。处理完一封电子邮件后,它会将其移动到另一个文件夹,因此不会再次被处理。
我不太明白您的第二个选项是如何工作的,但是将 Java 代码连接到 Outlook 对我来说听起来更难。
下面概述了如何使用 JavaMail 在 Exchange 服务器上处理电子邮件。它应该适用于任何支持 IMAP 的邮件服务器:
public void processMailExample() {
Store store = session.getStore(new javax.mail.URLName("imap://user:pass@mailserver..."));
store.connect();
Folder inputFolder = store.getFolder("INBOX");
Folder outputFolder = store.getFolder("INBOX/Processed");
inputFolder.open(Folder.READ_WRITE);
Message[] messages = inputFolder.getMessages();
for (Message message : messages) {
// Process message here
moveMessage(message, outputFolder);
}
}
public void moveMessage(Message m, Folder to) throws MessagingException
{
m.getFolder().copyMessages(new Message[] {m}, to);
m.setFlag(Flag.DELETED, true);
m.getFolder().expunge();
}
如果特定电子邮件有附件,那么它将是一个实例,javax.mail.internet.MimeMessage
而不仅仅是Message
. 该MimeMessage
课程使您可以完全访问所有附件、HTML 等,因此您应该能够访问您需要上传到您的 CRM 系统的所有内容。