微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – 发送多线程SendEmail请求返回General Mapi Failure

我正在使用 MAPI code by Dave Brooks.

我试图以编程方式发送生成的Crystal报表.

当我在没有线程的情况下运行代码时,一切运行正常.问题是当我使用线程时,我得到返回错误“General MAPI failure [2]”.

我之前从未使用过线程,并且理解存在危险.任何人都可以对此问题提供任何见解吗?注意:我已删除异常处理以使代码更清晰.

Private Sub RunReport()
    SetParameters()
    SaveReportFile()


    Dim operation As New ThreadStart(AddressOf SendEmail)
    Dim theThread As New Thread(operation)
    theThread.Start()
End Sub

Public Sub SendEmail()
   Dim m As MAPI
   m = New MAPI()
   Dim email As String
   For Each email In emailAddress
       m.AddRecipientBCC(email)
   Next email
   m.AddAttachment(@"c:\temp\report.pdf")
   m.SendMailPopup("Requested Report","")
End Sub

解决方法

一个非常晚的答案,但我想我还是会添加它,因为我刚刚遇到这个并且在其他地方找不到答案.

在使用以下命令启动之前,您需要将线程的公寓状态设置为STA:

theThread.SetApartmentState(ApartmentState.STA);

请注意,来自线程池的线程(例如,由BackgroundWorker组件使用)是MTA.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐