4

System.Net.Mail.SMTPClent 経由で送信される電子メールをキューに入れている場合、このメールはどこにありますか? Windows SMTP クライアントでは、C:\inetpub\mailroot フォルダーにあります。.NET クライアント用の同様のフォルダーはありますか?

編集:これは例です。XP コンピューターで送信 SMTP サーバーをオフにしてから、多数の電子メールを送信するアプリケーションを実行すると、.NET SMTPClient.Send 呼び出しが成功するため、電子メールはどこかにキューに入れられます。数時間後、ローカルの SMTP サーバーを起動すると、メールが突然飛び出します。その間はどこに?ローカル SMTP サーバーはありませんが、Vista デスクトップでも同じ動作が発生します。ファイアウォールでポート 25 をブロックすることで機能を複製でき、メールがどこかでキューに入れられます。どこ?

この質問の理由は、私が持っているサーバーで SMTP サービスを再度有効にしたいのですが、その間に何がキューに入れられたのかわかりません。サービスを有効にします。そうすれば、顧客は非常に古いキューに入れられた電子メールを突然受け取ることはありません。

編集:明らかに、私は何について話しているのかわかりません。Vistaでこれを行うと:

    Dim mm As New System.Net.Mail.MailMessage("me@me.com", "you@you.com", "Testing", "this is a test")

    Dim s As New System.Net.Mail.SmtpClient("localhost")
    s.DeliveryMethod = Mail.SmtpDeliveryMethod.PickupDirectoryFromIis
    s.Send(mm)

IIS ピックアップ フォルダーがないため、例外が発生します。「Mail.SmtpDeliveryMethod.Network」に変更すると、SMTP サーバーが実行されていないため、すぐに例外が発生します。サーバー 2003 でこれをテストしますが、過去には両方とも機能していたと断言できました。さらにテストを行い、必要に応じて質問を変更します。

4

5 に答える 5

4

SmtpClient の MSDN ページの外観から、構成可能です。DeliveryMethodプロパティを使用して、メールをすぐに送信するか、IIS ピックアップ フォルダー (おそらく C:\inetpub\mailroot) のキューに入れるか、選択したフォルダー ( PickupDirectoryLocationプロパティで指定) に配置するかを決定できます。

于 2008-12-21T05:19:34.077 に答える
2

説明は少しあいまいですが、呼び出しSend()て呼び出しが成功した場合、それはもう .NET の領域にはありません。何かが配信を受け入れ、その何かのキューに座っています。外の世界と接続できるメールサーバーを再びオンにすると、喜びのためにジャンプします. がの場合、(少なくとも、Reflector の逆アセンブルから判断すると) 中間の一時ファイルを介してではなく、ネットワーク ストリームに直接落書きしていると確信しています。接続を開いてそのストリームを取得できなかった場合は、例外で嘔吐します。これは、このクラスを使用した私の実際の経験と一致します。それが役立つことを願っています。DeliveryMethodNetworkDeliveryMethodNetwork

于 2009-01-30T06:12:13.077 に答える
1

指定した集荷ディレクトリと配送方法を設定して、より細かく制御できます

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="c:\Temp\" />
        </smtp>
    </mailSettings>
</sysetm.net>
于 2009-01-30T14:53:03.273 に答える