SmtpClient クラス
アセンブリ: System (system.dll 内)


SmtpClient クラスは、配信用 SMTP サーバーに電子メールを送信するために使用されます。次の表に示すクラスは、SmtpClient を使用して送信できる電子メール メッセージを作成するために使用されます。
SmtpClient を使用して電子メール メッセージを作成し、送付するには、次の情報を指定する必要があります。
-
電子メールを送信するために使用する SMTP ホスト サーバー。詳細については、Host および Portproperties のトピックを参照してください。
-
認証用の資格情報 (SMTP サーバーによって要求された場合)。詳細については、Credentials プロパティのトピックを参照してください。
-
差出人の電子メール アドレス。詳細については、from パラメータを受け取る Send メソッドと SendAsync メソッドのトピックを参照してください。また、MailMessage.From プロパティのトピックも参照してください。
-
受信者の 1 つ以上の電子メール アドレス。詳細については、recipient パラメータを受け取る Send メソッドと SendAsync メソッドのトピックを参照してください。また、MailMessage.To プロパティのトピックも参照してください。
-
メッセージの内容。詳細については、body パラメータを受け取る Send メソッドと SendAsync メソッドのトピックを参照してください。また、MailMessage.Body プロパティのトピックも参照してください。
添付データを電子メール メッセージに含めるには、まず Attachment クラスを使用して添付データを作成し、次に MailMessage.Attachments プロパティを使用してそのデータをメッセージに追加します。受信者が使用している電子メール プログラムや添付するファイルの種類によっては、一部の受信者が添付データを読むことができない可能性があります。元の形式で添付データを表示できないユーザーのために、MailMessage.AlternateViews プロパティを使用して別の表示形式を指定できます。
アプリケーションまたはコンピュータの構成ファイルを使用して、すべての SmtpClient オブジェクトに対して既定のホスト、ポート、および資格情報の値を指定できます。詳細については、「mailSettings 要素 (ネットワーク設定)」を参照してください。
電子メール メッセージを送信し、SMTP サーバーへの送信の待機中に処理をブロックするには、いずれかの同期 Send メソッドを使用します。プログラムのメイン スレッドが、電子メールの送信中も実行を継続できるようにするには、いずれかの非同期 SendAsync メソッドを使用します。SendAsync 操作が完了すると、SendCompleted イベントが発生します。このイベントを受信するには、SendCompletedEventHandler デリゲートを SendCompleted に追加する必要があります。SendCompletedEventHandler デリゲートは、SendCompleted イベントの通知を処理するコールバック メソッドを参照する必要があります。電子メールの非同期的な伝送をキャンセルするには、SendAsyncCancel メソッドを使用します。
![]() |
---|
電子メールを伝送中に SendAsync または Send を再度呼び出すと、InvalidOperationException が通知されます。 |
SMTP は、RFC 2821 (http://www.ietf.org を参照) で定義されています。

電子メール メッセージを非同期的に送信するコード例を次に示します。
using System; using System.Net; using System.Net.Mail; using System.Net.Mime; using System.Threading; using System.ComponentModel; namespace Examples.SmptExamples.Async { public class SimpleAsynchronousExample { static bool mailSent = false; public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e) { // Get the unique identifier for this asynchronous operation. String token = (string) e.UserState; if (e.Cancelled) { Console.WriteLine("[{0}] Send canceled.", token); } if (e.Error != null) { Console.WriteLine("[{0}] {1}", token, e.Error.ToString()); } else { Console.WriteLine("Message sent."); } mailSent = true; } public static void Main(string[] args) { // Command line argument must the the SMTP host. SmtpClient client = new SmtpClient(args[0]); // Specify the e-mail sender. // Create a mailing address that includes a UTF8 character // in the display name. MailAddress from = new MailAddress("jane@contoso.com", "Jane " + (char)0xD8+ " Clayton", System.Text.Encoding.UTF8); // Set destinations for the e-mail message. MailAddress to = new MailAddress("ben@contoso.com"); // Specify the message content. MailMessage message = new MailMessage(from, to); message.Body = "This is a test e-mail message sent by an application. "; // Include some non-ASCII characters in body and subject. string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'}); message.Body += Environment.NewLine + someArrows; message.BodyEncoding = System.Text.Encoding.UTF8; message.Subject = "test message 1" + someArrows; message.SubjectEncoding = System.Text.Encoding.UTF8; // Set the method that is called back when the send operation ends. client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); // The userState can be any object that allows your callback // method to identify this send operation. // For this example, the userToken is a string constant. string userState = "test message1"; client.SendAsync(message, userState); Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit."); string answer = Console.ReadLine(); // If the user canceled the send, and mail hasn't been sent yet, // then cancel the pending operation. if (answer.StartsWith("c") && mailSent == false) { client.SendAsyncCancel(); } // Clean up. message.Dispose(); Console.WriteLine("Goodbye."); } } }
#using <System.dll> using namespace System; using namespace System::Net; using namespace System::Net::Mail; using namespace System::Net::Mime; using namespace System::Threading; using namespace System::ComponentModel; static bool mailSent; static void SendCompletedCallback(Object^ sender, AsyncCompletedEventArgs^ e) { // Get the unique identifier for this asynchronous // operation. String^ token = (String^) e->UserState; if (e->Cancelled) { Console::WriteLine("[{0}] Send canceled.", token); } if (e->Error != nullptr) { Console::WriteLine("[{0}] {1}", token, e->Error->ToString()); } else { Console::WriteLine("Message sent."); } mailSent = true; } int main(array<String^>^ args) { if (args->Length > 1) { // Command line argument must the the SMTP host. SmtpClient^ client = gcnew SmtpClient(args[1]); // Specify the e-mail sender. // Create a mailing address that includes a UTF8 // character in the display name. MailAddress^ from = gcnew MailAddress("jane@contoso.com", "Jane " + (wchar_t)0xD8 + " Clayton", System::Text::Encoding::UTF8); // Set destinations for the e-mail message. MailAddress^ to = gcnew MailAddress("ben@contoso.com"); // Specify the message content. MailMessage^ message = gcnew MailMessage(from, to); message->Body = "This is a test e-mail message sent" + " by an application. "; // Include some non-ASCII characters in body and // subject. String^ someArrows = gcnew String(gcnew array<wchar_t>{L'\u2190', L'\u2191', L'\u2192', L'\u2193'}); message->Body += Environment::NewLine + someArrows; message->BodyEncoding = System::Text::Encoding::UTF8; message->Subject = "test message 1" + someArrows; message->SubjectEncoding = System::Text::Encoding::UTF8; // Set the method that is called back when the send // operation ends. client->SendCompleted += gcnew SendCompletedEventHandler(SendCompletedCallback); // The userState can be any object that allows your // callback method to identify this send operation. // For this example, the userToken is a string constant. String^ userState = "test message1"; client->SendAsync(message, userState); Console::WriteLine("Sending message... press c to" + " cancel mail. Press any other key to exit."); String^ answer = Console::ReadLine(); // If the user canceled the send, and mail hasn't been // sent yet,then cancel the pending operation. if (answer->ToLower()->StartsWith("c") && mailSent == false) { client->SendAsyncCancel(); } // Clean up. delete message; client = nullptr; Console::WriteLine("Goodbye."); } else { Console::WriteLine("Please give SMTP server name!"); } }

System.Net.Mail.SmtpClient


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SmtpClient クラスのページへのリンク