只有一个请求我的老板应用程序,我的工作。基本上我们得到一封电子邮件地址设置一个外部客户提交的excel文件。

什么我需要的是一种自动选择的任何电子邮件发送到该地址,这样我就可以采取的附件,处理并保存一个文件夹。

的任何信息,甚至从哪里开始将是有益的。\

注:我们正在使用lotus notes服务器做到这一点,但通用的方式会更有用的(如果可能)。

有帮助吗?

解决方案

电子邮件>邮件服务器->[东西]->文件对盘。

磁盘上的文件是很容易的分析,使用 JavaMail.

在[某事]可以是:

其他提示

编辑: 自从我第一写这个答案,更明智有移动以及现在要求只是一个单元的测试工具,因此需要回答下面有少许盐...


Svrist的答案是好的,但是如果你想要避免他的中间步骤(电邮件服务器编写的邮件向盘后面取Java系统)可以使用 更聪明.

聪明让你开始的一Java邮件服务器:

Wiser wiser = new Wiser();
wiser.setPort(2500);
wiser.start();

然后你就可以调查定期邮件:

for (WiserMessage message : wiser.getMessages())
{
    String envelopeSender = message.getEnvelopeSender();
    String envelopeReceiver = message.getEnvelopeReceiver();

    MimeMessage mess = message.getMimeMessage();

    // mail processing goes here
}

使用邮件数据库(Domino管理员可以设置了你但它在帮助文件)。

该数据库中,您可以创建一个代理,运行周期性地处理所有新的文件。该代理将使用EmbeddedObjects财产的NotesRichTextItem类和ExtractFile方法的NotesEmbeddedObject类中得到处理文件附件和提取到指定的位置。

例如,这个脚本通过的所有文件的附件,目的链接,以及嵌入的对象在体项目的文件。每次发现一个文件的附件,它分离的文件的样本目录C驱动器上,并删除附件文档

Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) Then
      Call o.ExtractFile( "c:\samples\" & o.Source )
      Call o.Remove
      Call doc.Save( False, True )
    End If
  End Forall
End If

我已经做了相当多的最近Java剂在Domino服务器。Domino8.5服务器支持Java6和地嵌入式的,所以它不会把个人与一位的多米诺骨牌的发展经验,长期放在一起剂时运行的新的邮件到达。在件其更容易但是,需要更多的专门技能,这你可能会需要得到一个承包商来提供。

限制你有可能遇到的问题提取的文件,可以很容易地将它Domino服务器上的文件结构,但你可能是有限的操作系统的安全,从将它放在一个不同的服务器。

Lotus Notes/Domino邮件存储在一个笔记数据库。有Api可用于获得的文件(电子邮件),阅读场价值(从,主题),以及分离的文件。

Api包括

-件(VB的变型,可用内Notes数据库)

-Java(从内部或外部数据库)

-C API(外部)

-同API可通过COM服务器

你可以创建一个"计划的代理"数据库内的(使用件或Java),可以找到文件,因为它最后一个跑了,找到本附件,并提取他们。代理将需要签署与一个ID,具有适当的权限,服务器,包括那些要求编写文件系统和发起任何其他进程。

外部的数据库,可以使用任何API除件登录服务器的邮件数据库,并遵循类似的过程,例如提取的文件上本地的一个客户或单独的服务器。C API和COM需要注意的客户安装,但Java应用程序可以设立运行通过CORBA/DIIOP没有一个全面安装。

咨询了多米诺骨牌设计师的帮助(或IBM的网站C API)的更多信息。

作为一个"通用的方式"来做到这一点,如果你访问的数据中注意到,需要提取附件,我认为,这些APIs是你最好的选择。如果你设想将应用程序移植到另一个邮件系统,考虑耦API程序通过的"接口",所以你只需要增加一个新执行情况的界面,以支持新的电子邮件系统。

你可以访问的笔记文件相对较容易地使用DIIOP,将是一个很容易比下降C Api路...

尝试POP3Client在 净Commons包;它会让你Java程序检查新的邮件,为一个特别帐户在任何时间你想要的(每隔几分钟吗?每小时?), 并获得/中删除的消息,因为所希望的。

SMTP/POP3可启用Domino服务器。与此之前,并得到松鼠邮件运行。SMTP是一位资源密集型的,但是值得努力,因为然后你不必下降到莲花天堂得到的东西,工作。只写了一个小Java CLI的程序,将检查特定的电子邮箱(POP3或SMTP),并通过分析的信息,拉的附件并将它们放在需要的地方。

很多文件和例子:http://java.sun.com/products/javamail/

技术的开发采取这种方法将可更广泛地适用于未来的职业生涯,比任何东西的Lotus/Domino具体。

不管你做什么,你会需要了解的Lotus Notes数据结构。好消息是完全自动化的解决方案可以建立在注意到非常容易。

你最好的赌注是建立在注意到,它可以设立自动运行,每当新的邮件接收。Gary的答案是死了,但是没有任何经验,它可能会难找出如何实现它自己。另一方面,它确实不应采取任何主管注意到编程员超过一个小时或两个以设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top