加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:27:41 所属栏目:百科 来源:网络整理
导读:我正在使用 MAPI code by Dave Brooks. 我试图以编程方式发送生成的Crystal报表. 当我在没有线程的情况下运行代码时,一切运行正常.问题是当我使用线程时,我得到返回错误“General MAPI failure [2]”. 我之前从未使用过线程,并且理解存在危险.任何人都可以对
我正在使用 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:tempreport.pdf")
   m.SendMailPopup("Requested Report","")
End Sub

解决方法

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

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

theThread.SetApartmentState(ApartmentState.STA);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读