C#コードで、サーバー上のSMTPサーバー構成などを知らなくても電子メールを送信する方法、またはそのようなものを設定する方法はありますか?
私が開発しているコードはライブサーバーにデプロイされますが、構成については何も知らないため、SMTPサーバーがどうなるかを予測することはできません。
C#コードで、サーバー上のSMTPサーバー構成などを知らなくても電子メールを送信する方法、またはそのようなものを設定する方法はありますか?
私が開発しているコードはライブサーバーにデプロイされますが、構成については何も知らないため、SMTPサーバーがどうなるかを予測することはできません。
これをweb.configに追加します(MSDNリファレンスはこちら):
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="jdoe@example.com">
<network host="localhost" port="25" />
</smtp>
</mailSettings>
</system.net>
構成設定を指定せずにSmtpClientを使用すると、web.configの値が使用されます。
MailMessage msg = new MailMessage(...);
// build message contents
SmtpClient client = new SmtpClient();
client.Send(msg);
最良の答えは、ライブになるまで何もわからない場合、すべての設定をweb.configに移動できますか?これにより、最後の最後まで構成が可能になります。以下は、web.configファイルにダンプするコードです。なぜあなたがこの情報にアクセスできないのかについて質問したいのですが
<system.net>
<mailSettings>
<smtp from="you@yourdomain.com">
<network host="SMTP SERVER ADDRESS" port="25"
userName="USERNAME" password="PASSWORD">
</smtp>
</mailSettings>
</system.net>
SMTP構成が正しい場合は、次のようにします。
MailMessage mail = new MailMessage();
mail.To = "To";
mail.From = "From";
mail.Subject = "Subject";
mail.Body = "Body";
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(mail);
別の方法として: サーバー構成に依存せずにプログラムで実行する場合は、次のようにすることができます。
MailMessage mail = new MailMessage() {
To = "someone@somewhere",
From = "someone@somewhere",
Subject = "My Subject",
Body = "My message"
};
SmtpClient client = new SmtpClient("SMTP Server Address");
// Naturally you change the "SMTP Server Address" to the
// actual SMTP server address
client.Send(mail);
ただし、web.config ファイル (ASP.NET Web 構成ツールでも構成できます) に貼り付けることをお勧めします。
グーグルからこれを試してください
ええ、SMTP サーバーがまったくなくても、SMTP4Dev などのツールを使用して電子メールを「送信」できます。これをテストに頻繁に使用して、誤って実際のユーザーに実際に電子メールを送信していないことを確認します。