2009-05-26 14 views
1

次のコードでは、エラーが発生した後にエラーが発生します。ASP.net SMTP接続エラー

 MailMessage Enveloppe = new MailMessage(); 

     //emails is an array of strings 
     foreach (string email in emails) 
      Enveloppe.To.Add(email); 

     //Setup message parameters 
     Enveloppe.Subject = "Documentation"; 
     Enveloppe.Body = "Infinitelycoolbodyhere" 
     Enveloppe.From = new MailAddress("[email protected]", "Myname"); 

     //files is an array of strings 
     foreach (string filename in files) { 
      //Add attachments 
      Enveloppe.Attachments.Add(new Attachment(new System.Net.WebClient().OpenRead(filename),filename.Substring(filename.LastIndexOf('/')))); 
     } 

     //Create the smtp client, and let it do its job 
     SmtpClient Mailman = new SmtpClient("mysmtphost"); 
     Mailman.EnableSsl = true; 
     Mailman.Port = 465; 
     Mailman.DeliveryMethod = SmtpDeliveryMethod.Network; 
     Mailman.Credentials = new System.Net.NetworkCredential("usernamehere", "passwordhere"); 
     Mailman.Send(Enveloppe); 

は、それはどちらか私の操作がタイムアウトしていること、または接続された当事者が適切に一定期間後に応答しなかったため、接続の試みが失敗した、または接続されたホストが持っているので、確立された接続が失敗した」と言われますことを起こります応答できませんでした "。

私は困惑し、私は私が間違って

アップデートをやって、それのどの部分が表示されない:私は最高の状態で、私は(下の私のラップトップに接続し、Telnet接続からサーバーに接続できないようですubuntu)、しかし私は決して "200"の応答を得る。 Windowsワークステーションの下で、私は永久的な空のtelnetウィンドウを取得します。

Thunderbirdを使用して指定されたサーバーで、問題なくメールを送受信できます。

答えて

1

は、最後に犯人を見つけた - 何とか接続は、ホスティング会社が私に与えていた「たぶん正しい」SMTPサーバの間でぶら下がって残っていました、実際のSMTPサーバ。 mail.domain.comのアドレスをsmtp.hostingdomain.comに変更しただけで、すべてが修正されました。

これは、私が嫌う「何か」の瞬間のひとつです。そのため、アプリケーションベースのメール送信の機能を削除する必要がありましたが、私の上司と私は代わりにファイルをどこかにホストし、添付ファイルを追加するのではなく電子メールにリンクを含めることにしましたメールに。

これは本当に質問に答えるのではなく、解決策を検討する人に送信しますが、送信したいファイルを外部からアクセス可能な場所に置き、代わりにリンケージを含めることができます。そこ。

0

SMTPサーバーは465で起動していて、SSLをサポートしていますか?

+0

最初のサーバーが応答しなかったときに2〜3回試しました。 私は個人的なウェブサイトのsmtpサーバーを使って、sslを使用しようとしました。したがって、コードのssl部分です。私は成功しませんでした。操作はタイムアウトしましたが、暗号化を使用してサーバーで電子メールを送受信できるので、起動していると想定する必要があります。 –

0

SMTPサーバーと通信しようとしたときに何か問題が発生しました。

私はあなたがWindowsにいると仮定しますので、スタート - >実行 - > 'telnet mysmtphost 465'に行き、コンソールに表示される応答を見てください。

このようなことがありますか?

Connected to mysmtphost. 
Escape character is '^]'. 
220 mysmtphost 
+0

私のUbuntuラップトップから、私は期待される結果を得ました。同じネットワーク上の私のワークステーション(コードを実行している人)から、私は永遠に空のtelnetウィンドウを取得します。 –

+0

ああ、どちらの場合でも "200 mysmtphost"はありません。 –

+0

推測:私のラップトップが電子メールを送受信できる場合、私が働いているマシンと、プログラムを実行しようとしているマシンがポート465または25のファイアウォールルールを持っていないことを確認する必要がありますか? –

0

(SNMを使用しているように見える)System.Net.Mailのトレースを有効にしてみてください。これを行うには、以下を.configファイルに追加します。

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true" /> 

    <sources> 

     <source name="System.Net" > 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

     <source name="System.Net.Sockets"> 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

    </sources> 


    <sharedListeners> 
     <add 
     name="MyTraceFile" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="System.Net.trace.log"    /> 
    </sharedListeners> 

    <switches> 
     <add name="System.Net" value="Verbose" /> 
     <add name="System.Net.Sockets" value="Verbose" /> 
    </switches> 

これは少なくとも、何が起こっているかを伝える必要があります。

私は何を期待するには、ここにいくつかのより多くの情報を持っている: http://systemnetmail.com/faq/4.10.aspx