2009-07-31 12 views
0

次のコードがありますが、smtpホストが定義されていないという例外があります。私がこれを実行していて、Visual Studioから自分のローカルマシンでテストを行っている場合、自分のマシンから電子メールを送信できるようにするにはどうすればよいですか。 Windowsサービスを有効にする必要がありますか?.NETを使用した電子メールの送信

private void SendMailToAdminToApprove(string email_, string name_) 
{ 
    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]", "Person's Name"); 
    msg.To.Add(new MailAddress("[email protected]", "Adam")); 
    msg.Subject = "Message Subject"; 
    msg.Body  = "Mail body content"; 
    msg.IsBodyHtml = true; 
    msg.Priority = MailPriority.High; 
    try 
    { 
     SmtpClient c = new SmtpClient(); 
     c.Send(msg); 
    } 
    catch (Exception ex) 
    { 
     Console.Write("T"); 
    } 
} 
+0

終了したら必ずMailMessageを廃棄してください。 –

答えて

8

実際のSMTPサーバーを指すようにSMTPホストを設定する必要があります。 1つのオプションは、自分のマシンでSMTPサービスを実行することですが、ISPのサーバーを指すこともできます。

編集

pcampbellとSkeolanが述べたように、実際の値はapp.configをに行く必要があります。 localhostが例外になるかどうかはわかりません。ローカルサーバーを実行しないオプションが必要かどうかによって異なります。

7

あなたはここにSMTPホストを指定する必要があります:

string smtpHost = "localhost"; 
//or go to your config file 
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString(); 

SmtpClient c = new SmtpClient(smtpHost); 
+4

実際のstmpHost文字列をapp.configまたはweb.configに引き出して、異なる展開用に変更することができます。その後、ローカルマシン上で[localhost]を使用することができます(ローカルマシン上で[virtual?] smtpサービスを実行していることを前提としています)が、後で再コンパイルすることなく外部メールサーバーを指定するオプションがあります。 – Skeolan

+1

必ずapp.configに入れてください。しかし、接続文字列のふりをする必要はありません。ちょうどそれを設定するか、従来のAPIを使用してください。 –

1

あなたはSMTPリレーを定義する必要があります。

SmtpClient c = new SmtpClient("relay.yourdomain.com"); 

か、ローカルでの中継を実行している場合:

SmtpClient c = new SmtpClient("localhost"); 
1

このセクションを変更する必要があります。

SmtpClient c = new SmtpClient(); 
// Either specify a SMTP server above, or set c.Host 
c.Send(msg); 

このメッセージの送信に使用するSMTPサーバーを指定する必要があります。ローカルにSMTPサーバーをインストールする場合、これはlocalhostでもかまいませんが、そうでない場合は、送信メールサーバーを適切に設定する必要があります。

0

私はC#で電子メールを送信するために使用するコードです。また、必要に応じてファイルをローカルに送信するためのコードをコメントアウトしました。

 SmtpClient smtp = new SmtpClient(smtpServer, portNumber); 
     // Disable SSL when saving to directory. 
     smtp.EnableSsl = true; 
     smtp.Credentials = new NetworkCredential(mailFrom, password); 

     // Set mail to be delivered to a folder 
     //smtp.PickupDirectoryLocation = @"C:\mail\Send"; 
     //smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 
関連する問題