0

この問題に関連するさまざまなスレッドがあることは知っていますが、それらのスレッドで応答を取得してサーバーで動作させることができませんでした。

誰かが私をここで助けてくれるかどうか試してみましょう。メールの 99% は適切に送信され、実際にそのエラーが返されることはほとんどありません。

私のコードは次のようになります

        MailMessage mm = new MailMessage(Settings.EmailCustomerService, to, subject, body);
        mm.SubjectEncoding = Encoding.UTF8;
        mm.BodyEncoding = Encoding.UTF8;
        mm.IsBodyHtml = true;

        MailAddress add = new MailAddress(Settings.EmailCustomerService, "Customer Service");
        mm.From = add;

        try
        {
            SmtpClient client = new SmtpClient(Settings.EmailSMTP);

            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential(Settings.EmailUser, Settings.EmailPwd); 

            System.Threading.ParameterizedThreadStart threadStart = new System.Threading.ParameterizedThreadStart(SendInThread);
            threadStart.Invoke(new SendInThreadParams
            {
                client = client,
                Message = mm
            });
        }
        finally
        {
            mm = null;
        }

実際には Credentials コードは後で追加されましたが、私のコードはそれがなくても問題なく実行されました。たまたま、電子メールの 1% が受信者に届かず、資格情報にこれらの 2 行を追加しても違いはありませんでした。

Settings.EmailUser は、SMTP が実行されているサーバー上の単なるユーザーですが、どこにも接続していません。

それが問題だと思います。

SMTP サーバー リレーは 127.0.0.1 を使用するように設定されており、FQDN は単なるマシンの名前です (「Machine1」のようなもの ... domain.com 名を含むものはありません)。

私が得ているエラーはこれです

Reporting-MTA: dns;Machine1
Received-From-MTA: dns;Machine1
Arrival-Date: Wed, 30 May 2012 23:08:36 -0700
Final-Recipient: rfc822;test@email.net
Action: failed
Status: 5.5. 0
診断コード: smtp;550 アクセスが拒否されました - 無効な HELO 名 (RFC2821 4.1.1.1 を参照)

メールで返信された返信メッセージは次のとおりです。

   > This is an automatically generated Delivery Status Notification.  
   Delivery to the following recipients failed.  
   test@email.com

高度なありがとう...

4

2 に答える 2

1

メッセージ/配信ステータスの添付ファイルに加えて、DSNには通常メッセージが返されます。この種の問題については、返されたメッセージのヘッダーとDSNも投稿する必要があります。

サーバーがメッセージを受け入れたように見えますが、メッセージの送信中にエラーが発生します。サーバーがそれを拒否した場合、コードは例外をスローします。そのため、サーバーMachine1はそれを受け入れ、email.netに送信しようとしましたが、email.netはそれを拒否しました。次に、Machine1はDSN(配信ステータス通知、この場合はNDR =配信不能レポート)を生成しました。

つまり、コードの問題ではなく、電子メールサーバーの構成エラーです。ほぼ確実に問題は、あなたが述べたように電子メールサーバーがFQDNで設定されていないことです。

構成の問題として、ServerFaultに属しています。

于 2012-05-31T07:10:41.593 に答える
0

BEN の回答に基づいて、PRIMARY DND SUFFIX が欠落していることに気付きました。

主に FQDN を見つけるには、次の手順を実行する必要があります。1) コマンド プロンプトを開きます。2) 「ipconfig /all」と入力します。

ホスト名 + プライマリ DNS サフィックスを読み取ります。

私のDNSサフィックスは空だったので、このリンクを使用して追加しました
http://www.simpledns.com/kb.aspx?kbid=1227

そして、マシンを再起動しました。

今、コードは魅力のように機能します。ありがとうベン!!!

于 2012-05-31T08:22:39.997 に答える