3

SmtpClientクラスを使用してASP.NETWebアプリケーションから電子メールを送信しようとしています。これまでのところ、127.0.0.1へのリレーアクセスを許可しています。Gmailアカウントにテストメールを送信しようとしています。EMLファイルがmailrootのキューフォルダに詰まっています。WinXPファイアウォールが無効になっています。コードに例外はありませんが、メールが宛先アドレスに配信されることはありません。他のメールアカウントも試してみました。

        SmtpClient client = new SmtpClient();
        client.Host = "127.0.0.1";

        MailMessage message = new MailMessage();
        message.To.Add("myemail@gmail.com");
        message.From = "name@domain.com";
        message.Subject = subject;
        message.IsBodyHtml = false;
        message.Body = body;

        client.Send(message);

これは、IISSMTPログからの抜粋です。

Software: Microsoft Internet Information Services 5.1
Version: 1.0
Date: 2009-01-16 18:28:28
Fields: time c-ip cs-method cs-uri-stem sc-status 
18:28:28 127.0.0.1 EHLO - 250
18:28:28 127.0.0.1 MAIL - 250
18:28:28 127.0.0.1 RCPT - 250
18:28:28 127.0.0.1 DATA - 250
18:29:45 127.0.0.1 MAIL - 250
18:29:45 127.0.0.1 RCPT - 250
18:29:45 127.0.0.1 DATA - 250
18:30:37 127.0.0.1 QUIT - 0
4

5 に答える 5

1

私はちょうど同じ問題と戦っていましたが、その理由と解決策を知っていると思います。

問題とそのテスト方法
まず、ポート 25 経由で接続できることを確認しました。たとえば、コマンド プロンプトで telnet を開き、次のように入力することで簡単に実行できます (小さな円は、記号ではなく、文字 O そのものです)。 :));

 o auth.smtp.1and1.co.uk 25

それが接続する場合 (エラーが発生するのではなく) 、ポート 25 のファイアウォールの問題ではありません。エラーが発生する場合は、まずファイアウォールの設定を確認してください。

次に、SMTP サービスでのログ記録を有効にし、すべての拡張プロパティにチェックを入れました。これにより、ログ ファイルに 2 つの URL が記録されました。私の場合、それらは
http://www.spamhaus.org/query/bl?ip=217.44.248.144
http://www.sorbs.net/lookup.shtml?217.44.248.144でした。

これらのリンクをたどると、基本的に、誰か(受信サーバーだと思います)が動的IPアドレスから送信していることを確認しており(自宅からADSL経由でこれを行っているだけです)、スパムとしてブロックしていることが明らかになりました.

解決策
ISP の SMTP サーバー経由で中継するように SMTP サーバーを構成する必要があります。
1. SMTP サービスの [プロパティ] に移動し、[配信] -> [詳細設定] に移動し
ます。 2. [スマート ホスト] フィールドに ISP の SMTP サーバーの名前を入力します (例: auth.smtp.1and1.co.uk)
3. 保存します。 4. [配信] タブに
戻り、[送信セキュリティ] タブを
クリックします。 5. [基本認証] をクリックし、メールへのアクセスに使用するユーザー名とパスワードを指定します。

ノート; 上記では、ISP の SMTP サーバーに対して認証する必要があり、ISP は POP3/IMAP と SMTP に同じ uid/pwd を使用することが最も一般的であることを想定しています。状況は異なる場合があります。メール プログラムのメール設定を確認してください。

于 2009-05-24T22:12:28.937 に答える
1

ネットワークの設定方法によっては、IIS に電子メールを Exchange サーバーに渡し、外部に渡すように指示する必要がある場合があります。
1. IIS MMC スナップインで [既定の SMTP 仮想サーバー] ノードを右クリックし、[プロパティ] ダイアログを開きます。
2. [配信] タブに移動し、タブの下部にある [詳細設定] ボタンをクリックします。
3. [スマート ホスト] ボックスに、Exchange サーバーの名前を入力します。(または、smtp.mydomain.com などの同じ DNS エントリ)

于 2009-01-20T12:01:17.447 に答える
0

コードが例外を返さない場合は、そこに何もない可能性があります。生の .EML ファイルを確認する場合は、そこをチェックして、不適切なものを探します。

ただし、最も可能性の高い問題は、IIS にキック "iisreset" を与えることです。これを行うと、おそらくメッセージが送信され始めるのがわかるでしょう。SMTP サーバーの構成変更は、再起動するまで有効になるとは限りません。

于 2009-01-19T12:07:03.207 に答える
0

私はまだこの Jim をテストしています。私が気づいたことの 1 つは、送信者アドレスが正しく設定されていないことです。From は、文字列ではなく MailAddress クラスを受け入れます。

変化する:

message.From = "name@domain.com";

に:

message.From = new MailAddress("name@domain.com");

[既定の SMTP 設定] で:

「IP アドレス:」ドロップダウンが 127.0.0.1 または (すべて未割り当て) に設定されていますか? 可能であれば、All Unassigned に設定してください。SMTP サービスを介してリレーできるように、マシンにバインドされた IP アドレスを追加してみてください。ホスト127.0.0.1にメールを送信していますが、IPが割り当てられたローカルネットワークから送信している可能性があります。動作を確認するには、Relay Restrictions のラジオ ボタンを [All except the below list] に選択し、リストをクリアしてください。これにより、リレーが開き、構成をテストできます。問題が何であるかを理解したら、これを制限する必要があります。

SMTP ログにエラー コードが表示されていませんか?

于 2009-01-16T20:15:53.777 に答える
0

イベントビューアーを確認すると、次のように表示されます

次の理由により、リモート ドメイン 'yahoo.com' へのメッセージ配信に失敗しました: SMTP プロトコル エラーが発生しました。

詳細については、ヘルプとサポート センター ( http://go.microsoft.com/fwlink/events.asp ) を参照してください。

(これは私のものです)。ヤフーにはある種のプロトコルが必要だと思いますか? または、間違ったプロトコルを設定していますか? まだ考え中..私にメールしてくださいjokenjp@yahoo.com(スパムとは思わない良い件名を付けて)

于 2009-04-11T09:20:50.713 に答える