0

私は以下のコードを持っています(私は本名を公開しないためにxxxで立ち往生しています)。このコードは、サーバーにアップロードすると正常に機能し、メールを完全に送信します。

        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(fromEmailAddress_);
        msg.To.Add(new MailAddress(toEmailAddress_));

        msg.Subject = subject_;
        msg.Body = body_;
        msg.IsBodyHtml = true;
        msg.Priority = MailPriority.High;

        NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("xxx@xxxx.org", "password");
        try
        {
            SmtpClient c = new SmtpClient("mail.xxx.org");
            c.UseDefaultCredentials = false;
            c.Credentials = basicAuthenticationInfo;
            c.Send(msg);
        }
        catch (Exception ex)
        {
            throw ex;
            Console.Write(ex.Message.ToString());
        }

しかし、Visual Studioのマシンでローカルにテストすると、エラーが発生します。

[SocketException(0x274d):ターゲットマシンがアクティブに拒否したため、接続できませんでした66.226.21.251:25] System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot、SocketAddress socketAddress)+239System.Net.Sockets.Socket。 InternalConnect(EndPoint remoteEP)+35 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure、Socket s4、Socket s6、Socket&socket、IPAddress&address、ConnectSocketState state、IAsyncResult asyncResult、Int32 timeout、Exception&exception)+224

[WebException:リモートサーバーに接続できません] System.Net.ServicePoint.GetConnection(PooledStream PooledStream、オブジェクト所有者、ブール非同期、IPAddress&アドレス、Socket&abortSocket、Socket&abortSocket6、Int32タイムアウト)+5420699 System.Net.PooledStream.Activate(オブジェクトowningObject、ブール非同期、Int32タイムアウト、GeneralAsyncDelegate asyncCallback)+202 System.Net.PooledStream.Activate(Object owningObject、GeneralAsyncDelegate asyncCallback)+21 System.Net.ConnectionPool.GetConnection(Object owningObject、GeneralAsyncDelegate asyncCallback、Int32 CreationTimeout)+332システム.Net.Mail.SmtpConnection.GetConnection(String host、Int32 port)+160 System.Net.Mail.SmtpTransport.GetConnection(String host、Int32 port)+159

これが機能しない理由の提案

4

6 に答える 6

3

これを実行するために私が最初に行うことは、エラー メッセージが示すように、ターゲット マシンが実際に接続を拒否しているかどうかを確認することです。ここからその IP アドレスのポート 25 に接続できるので、エラー メッセージが誤解を招く可能性があります。これらはすべて、接続に失敗する可能性のある原因です。

  • コードに問題があります
  • 使用しているライブラリに問題があります
  • 奇妙なプログラムからのアウトバウンド メールを防ぐローカル ファイアウォールがある
  • ISP は、独自のサーバー以外へのアウトバウンド SMTP 接続を許可していません
  • 一部の中間ネットワークが物事をブロックしています
  • メール サーバーの ISP がネットワークからの SMTP 接続をブロックしている
  • おそらくあなたがブロックリストに載っているため、メールサーバーは本当にあなたを拒否しています

詳細については、Wiresharkをダウンロードしてインストールしてください。ネットワークのデバッガのようなものです。システムとターゲット ネットワークの間でキャプチャを開始し、コードを実行します。キャプチャされたパケットを解釈するにはある程度の経験が必要です。

于 2009-08-06T06:04:46.010 に答える
1

コードでポート番号を使用していないと思います。これらの行を使用すると、メールはローカルにも送信されます。

    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    smtp.Timeout = 60000;
    smtp.Port = 25;

これは私のシステムで動作しています。ローカル システムでも動作することを願っています。

于 2009-08-06T10:14:51.620 に答える
1

リレーの制限により、許可された IP のセット以外からメールを送信できなくなっている可能性があります。SMTP サーバーが Web/アプリケーション サーバー上で構成されている場合、おそらく 127.0.0.1 経由でのみメールを送信できるように設定されています。

IIS マネージャーを介してローカル SMTP サーバーを構成できます。このパスをたどる場合は、ローカル マシンでポート 25 が開いていることを確認してください。多くの場合、ウイルス対策タイプのソフトウェアがこのポートをブロック/監視し、電子メールの配信を妨害します。

于 2009-08-06T06:26:24.563 に答える
0

プロバイダーは、おそらくメールサーバーをファイアウォールで保護しているため、ホスティング環境からのメールのみを受け入れています。

ローカルでテストするときにローカルメールサーバーを使用するように変更します。

于 2009-08-06T05:53:17.483 に答える
0

ウイルス対策が狂っているかどうかを確認してください。マカフィーを実行している人々でこの問題を数回見ました.

お役に立てれば。

于 2009-08-06T06:56:42.177 に答える
0

XP メール サーバーを要求しました。hMailServer を試す

于 2009-08-06T06:30:36.410 に答える