2012-06-04 56 views
0

我们正在处理来自我们客户的许多电子邮件。每个包含案例编号主题行的电子邮件都会上传到我们的CRM。目前,我们的分析师正在执行此过程,即他获取或发送的每封电子邮件都会将电子邮件复制到桌面,然后将该文件上传到相关案例。将Outlook电子邮件复制到一个文件夹或通过javamail读取电子邮件?

这是非常乏味和耗时的。我的设计问题是这样的:

选项1:通过java邮件阅读电子邮件,如果主题行有个案号 - 只需获取内容和附件并将电子邮件上传到crm即可。

或者

选项2:Outlook电子邮件复制到桌面,然后上传电子邮件作为文件到CRM。

我不确定,但看起来选项2更好,因为电子邮件中的所有内容(附件,文档,图表,照片)都会上传,而分析将参考caseid时,他将能够看到按原样发送电子邮件(就好像它是从Outlook中发出的一样)。

首先选择保存我的Hessle的与Outlook的工作,但我怕电子邮件将纯文本(不知道是否有上传整个电子邮件,仿佛这是一个Outlook文件的方式)

感谢任何指针

回答

1

你的第一个选择直接连接到邮件服务器实际上是非常简单的。

我们通过使用JavaMail登录到Exchange服务器来做类似的事情:Java应用程序定期连接到Exchange并处理它找到的所有邮件。一旦它处理了一封电子邮件,它就会将它移动到另一个文件夹,因此它不会再被处理。

我不太明白你的第二个选择是如何工作的,但将Java代码连接到Outlook听起来更难。

下面概述了如何使用JavaMail处理Exchange服务器上的电子邮件。应该为支持IMAP任何邮件服务器的工作:

public void processMailExample() { 
    Store store = session.getStore(new javax.mail.URLName("imap://user:[email protected]")); 
    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系统的所有内容。

+0

太好了,让我试试这个并回到这个线程。 – adhg

+1

抱歉,延迟(其他功能堆积)谢谢! – adhg

相关问题