2009-08-06 10 views
0

私は以下のコードを持っています(私は本名を公開しないようにxxxに固執しています)。このコードは、サーバーにアップロードするときにうまく動作し、電子メールを完全に送信します。メールを送信するサーバー上で動作しますが、私のローカルマシンではありません

[のSocketException(0x274d):私は、Visual Studioで私のマシン上でローカルにテストするとき

 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("[email protected]", "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()); 
     } 

はしかし、私はエラーを取得し、ターゲットマシンが積極的 66.226を拒否したため、、接続できませんでした。 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot、SocketAddress socketAddress)+239 System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)+35 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure 、ソケットs4、ソケットs6、ソケット&ソケット、IPアドレス&のアドレス、ConnectSocketState状態たIAsyncResult asyncResult、のInt32タイムアウト例外&例外)224

[WebException:リモートサーバに接続することができません] System.Net.ServicePoint.GetConnection(PooledStream PooledStream、オブジェクトの所有者、ブール非同期、たIPAddress &アドレス、ソケット& abortSocket、ソケット& abortSocket6、のInt32タイムアウト)5420699 System.Net.PooledStream.Activate(owningObject、ブール非同期、のInt32のタイムアウト、GeneralAsyncDelegate asyncCallbackオブジェクト)202 System.Net.PooledStream。 Activate(オブジェクトowningObject、GeneralAsyncDelegate asyncCallback)+21 System.Net.ConnectionPool.GetConnection(Object owningObject、GeneralAsyncDelegate asyncCallback、Int32 creationTimeout)+332 System.Net.Mail.SmtpConnection.GetConnection(String host、Int32 port)+160 System.Net.Mail.SmtpTransport.GetConnection文字列のホスト、のInt32ポート)、これは、それが唯一の彼らのホスティング環境からのメールを受け入れているよう

答えて

2

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

  • コード内
  • あなたが
  • はあなたが変なプログラムからの送信メールを防止ローカルファイアウォールを持って使用しているライブラリ内のいくつかの問題があります
  • ISPが独自のサーバーを除いて、アウトバウンドSMTP接続を許可しない
  • 何らかの中間ネットワークは、メールサーバーのISPがyoからSMTP接続をブロックしている
  • 物事をブロックしていますウルネットワーク
  • は、メールサーバは、本当にあなたが、より詳細な情報を入手ダウンロードしてWiresharkをインストールするには、ブロックリスト

にしているかもしれないので、あなたを拒否しています。これはネットワーク用のデバッガのようなものです。システムとターゲットネットワークの間でキャプチャを開始し、コードを実行します。キャプチャされたパケットを解釈するのにはある程度の経験が必要です。

0

プロバイダは、おそらく自分のメールサーバーをファイアウォールで遮断している動作しない理由の159件の

任意の提案。

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

+0

windows xpには、テスト用にローカルで使用できるメールサーバーが付属していますか? – leora

+0

メールクライアントに設定されているISPのサーバーを使用してください。 – caf

1

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

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

0

あなたはXPメールサーバーを求めました。お試しくださいhMailServer

0

あなたのアンチウイルスが狂っているかどうかを見てみましょう、私はこの問題をmcafeeを実行している人と数回見ました。

これが役に立ちます。

1

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

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

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

関連する問題