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 管理者は、何らかの方法で問題をロード バランサーまで突き止めました。Exchange サーバーに直接接続すると、問題はなくなります。ただし、autodiscoverurl はロード バランサーに接続します。彼は今それをフォローアップしています。うまくいけば、すぐに完全な解決策が得られると思いますが、これが誰かにアイデアを与える場合、または他の誰かに役立つ場合に備えて、先に進んで投稿すると思いました.

于 2013-09-17T19:04:02.463 に答える
0

私たちは何ヶ月もこれに取り組んでいましたが、これに対する「適切な」解決策に到達したとは思いません. F5 の仮想 IP アドレスで有効になっている Application Security Manager まで追跡しました。トラフィックをスキャンし、添付ファイルが安全でないと判断していました。

于 2014-01-16T15:35:32.790 に答える