用于接收电子邮件的Outlook互操作API的替代方案

问题描述:

我在远程服务器上有一个电子邮件帐户。 我创建了一个应用程序,它利用outlook interop api来搜索具有特定主题的电子邮件,而不是从中提取附件并将​​其保存到目录。用于接收电子邮件的Outlook互操作API的替代方案

手动运行该应用程序时,一切正常。 但是,当我创建计划任务为这个应用程序,我得到

Stack: 
    at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(System.RuntimeType) 
    at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(System.RuntimeType) 
    at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(System.RuntimeType, System.Object[], Boolean) 
    at System.RuntimeTypeHandle.CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef) 
    at System.RuntimeType.CreateInstanceSlow(Boolean, Boolean, Boolean) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean, Boolean, Boolean, Boolean) 
    at System.Activator.CreateInstance(System.Type, Boolean) 
    at PocketDataFromEmail.EmailManager..ctor() 
    at MyApp.Program.Main(System.String[]) 

据说,前景并不适合那种情景: Is Interop.Outlook multithreaded?

如何检查的收件箱中的任何想法交换帐户并提取附件而不使用outlook interop api? 谢谢。

Exchange Web Services会成为一个选项吗?

http://msdn.microsoft.com/en-us/library/dd877045.aspx

还有MAPI,虽是旧的技术,并且我记得这是不是很好玩的使用方法:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e17e7f31-079a-43a9-bff2-0a110307611e&displaylang=en

+0

非常感谢。 – aykut 2011-05-19 18:26:15

在您的情况,它是适合使用Exchange Web服务,如上面的PeskyGnat所述,因为它不需要在计算机上安装MS Outlook。

您可能还会看到Aspose.Network for .NET组件(一种商用API),它可以从具有完整附件的Exchange,Imap和Pop3邮件服务器获取消息。有关示例代码,请参阅http://www.aspose.com/documentation/.net-components/aspose.network-for-.net/saving-messages-from-exchange-server-mailbox-in-eml-and-msg-format.html以从Exchange Server读取消息。

披露:我在Aspose担任技术推广人员。