4

我正在尝试使用 EWS 托管 API 2.0 发送带有 PDF 附件的消息。我将电子邮件作为不是我自己的帐户发送,但我已作为权限发送。

我可以发送不带附件的电子邮件,但是一旦我尝试发送附件,请求就会失败。

该文件肯定存在。

我已经实现TraceListener并看到创建附件请求在SendAndSaveCopy被调用时被发送,但我没有收到来自服务器的正确响应(我知道服务器正在收到我的请求,因为错误显然来自服务器)。在创建附件似乎失败后,我没有看到发送电子邮件的请求。

我在尝试时收到的错误SendAndSaveCopyThe request failed. The underlying connection was closed: An unexpected error occurred on a send.内部异常是Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.

我已经用谷歌搜索了这个,根据我发现的一些建议,我已经确认这不仅仅是订阅的超时(在完全相同的上下文中我可以在没有附件的情况下 SendAndSaveCopy 的事实支持,并且还通过事实上我可以在失败后发送错误电子邮件就好了)。其他人提到了文件大小的问题,但我的文件非常小(151 KB)。

我的 Exchange 管理员正在检查服务器端是否存在可能影响此问题的设置,但尚未发现任何内容。

谁能告诉我他们是否遇到过(并找到解决方案)这个特殊问题?甚至关于我可以指导我的 Exchange 管理员查看的特定设置的任何提示?

我的代码附在下面(为了便于阅读,我删除了我的错误消息打印):

Public Function SendEmailResponse(ByVal strSender As String, ByVal strRecipient As String, ByVal strSubject As String, ByVal strBody As String, _
                        ByVal ews2010 As ExchangeService, Optional ByVal strCCAddresses As List(Of String) = Nothing, _
                        Optional ByVal strFilesToAttach As List(Of String) = Nothing, _
                        Optional ByVal blnReceipt As Boolean = False) As Boolean
    Try
        Dim msgReply As New EmailMessage(ews2010)
        msgReply.Subject = strSubject
        msgReply.Body = New MessageBody(BodyType.Text, strBody)
        Dim fromAddress As New EmailAddress(strSender)
        msgReply.From = fromAddress
        msgReply.ToRecipients.Add(strRecipient)
        msgReply.IsReadReceiptRequested = blnReceipt
        If strCCAddresses IsNot Nothing Then
            For Each strCC As String In strCCAddresses
                msgReply.CcRecipients.Add(strCC)
            Next
        End If
        msgReply.Save()  '''This works just fine

        If strFilesToAttach IsNot Nothing Then
            For Each flAttach In strFilesToAttach
                msgReply.Attachments.AddFileAttachment(flAttach)
            Next
        End If
        msgReply.SendAndSaveCopy() '''CRASHES HERE IF AND ONLY IF I've attached files in the above loop
        SendEmailResponse = True
    Catch ex As Exception
        SendEmailResponse = False
    End Try
End Function
4

2 回答 2

0

来自 OP

我的 Exchange 管理员以某种方式将问题追溯到负载平衡器。如果我直接连接到交换服务器,问题就会消失;但 autodiscoverurl 连接到负载均衡器。他现在正在跟进。希望我很快就会有一个完整的解决方案,但我想我会继续发布,以防这给任何人任何想法或帮助其他人。

于 2013-09-17T19:04:02.463 回答
0

我们在这个问题上待了几个月,我认为我们从来没有找到过“正确”的解决方案。我们将其追踪到在 F5 上的虚拟 IP 地址上启用的应用程序安全管理器。它正在扫描流量并认为附件不安全。

于 2014-01-16T15:35:32.790 回答