SmtpClient イベント
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 コンストラクタ ()
アセンブリ: System (system.dll 内)


このコンストラクタは、アプリケーションまたはコンピュータの構成ファイルの設定を使用して、新しい SmtpClient に対する Host、Credentials、および Port の各プロパティを初期化します。詳細については、「mailSettings 要素 (ネットワーク設定)」を参照してください。

public static void CreateTestMessage3() { MailAddress to = new MailAddress("jane@contoso.com"); MailAddress from = new MailAddress("ben@contoso.com"); MailMessage message = new MailMessage(from, to); message.Subject = "Using the new SMTP client."; message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; // Use the application or machine configuration to get the // host, port, and credentials. SmtpClient client = new SmtpClient(); Console.WriteLine("Sending an e-mail message to {0} at {1} by using the SMTP host {2}.", to.User, to.Host, client.Host); client.Send(message); }
アプリケーションまたはコンピュータの構成ファイルの <mailSettings> ノードの例については、「mailSettings 要素 (ネットワーク設定)」を参照してください。


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 コンストラクタ (String, Int32)
アセンブリ: System (system.dll 内)



host パラメータは Host プロパティの値を設定し、port パラメータは Port プロパティの値を設定します。host が null 参照 (Visual Basic では Nothing) か、String.Empty と等しい場合、Host は、アプリケーションまたはコンピュータの構成ファイルの設定を使用して初期化されます。port が 0 の場合、Port は、アプリケーションまたはコンピュータの構成ファイルの設定を使用して初期化されます。Credentials プロパティは、アプリケーションまたはコンピュータの構成ファイルの設定を使用して初期化されます。
アプリケーションの構成ファイルおよびコンピュータの構成ファイルの使用方法の詳細については、「mailSettings 要素 (ネットワーク設定)」を参照してください。SmtpClient のコンストラクタまたはプロパティを使用して情報が指定されている場合、この情報によって構成ファイルの設定がオーバーライドされます。

public static void CreateTestMessage1(string server, int port) { string to = "jane@contoso.com"; string from = "ben@contoso.com"; string subject = "Using the new SMTP client."; string body = @"Using this new feature, you can send an e-mail message from an application very easily."; MailMessage message = new MailMessage(from, to, subject, body); SmtpClient client = new SmtpClient(server, port); // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }


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 コンストラクタ (String)
アセンブリ: System (system.dll 内)


host パラメータは、Host プロパティの値の初期化に使用されます。Credentials プロパティと Port プロパティは、アプリケーションまたはコンピュータの構成ファイルの設定を使用して初期化されます。host が null 参照 (Visual Basic では Nothing) か、String.Empty と等しい場合、Host は、アプリケーションまたはコンピュータの構成ファイルの設定を使用して初期化されます。
アプリケーションの構成ファイルおよびコンピュータの構成ファイルの使用方法の詳細については、「mailSettings 要素 (ネットワーク設定)」を参照してください。SmtpClient のコンストラクタまたはプロパティを使用して情報が指定されている場合、この情報によって構成ファイルの設定がオーバーライドされます。

public static void CreateTimeoutTestMessage(string server) { string to = "jane@contoso.com"; string from = "ben@contoso.com"; string subject = "Using the new SMTP client."; string body = @"Using this new feature, you can send an e-mail message from an application very easily."; MailMessage message = new MailMessage(from, to, subject, body); SmtpClient client = new SmtpClient(server); Console.WriteLine("Changing time out from {0} to 100.", client.Timeout); client.Timeout = 100; // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }


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 コンストラクタ

名前 | 説明 |
---|---|
SmtpClient () | 構成ファイルの設定を使用して SmtpClient クラスの新しいインスタンスを初期化します。 |
SmtpClient (String) | 指定した SMTP サーバーを使用して電子メールを送信する SmtpClient クラスの新しいインスタンスを初期化します。 |
SmtpClient (String, Int32) | 指定した SMTP サーバーとポートを使用して電子メールを送信する SmtpClient クラスのインスタンスを初期化します。 |

SmtpClient プロパティ

名前 | 説明 | |
---|---|---|
![]() | ClientCertificates | SSL (Secure Sockets Layer) 接続を確立するために使用する必要のある証明書を指定します。 |
![]() | Credentials | 差出人の認証に使用する資格情報を取得または設定します。 |
![]() | DeliveryMethod | 送信メッセージの処理方法を指定します。 |
![]() | EnableSsl | SmtpClient が、接続を暗号化するために SSL (Secure Sockets Layer) を使用するかどうかを指定します。 |
![]() | Host | SMTP トランザクションで使用されるホストの名前または IP アドレスを取得または設定します。 |
![]() | PickupDirectoryLocation | ローカルの SMTP サーバーによって処理される電子メール メッセージをアプリケーションが保存するフォルダを取得または設定します。 |
![]() | Port | SMTP トランザクションで使用されるポートを取得または設定します。 |
![]() | ServicePoint | 電子メール メッセージの送信に使用するネットワーク接続を取得します。 |
![]() | Timeout | 同期的な Send 呼び出しがタイムアウトになるまでの時間を指定する値を取得または設定します。 |
![]() | UseDefaultCredentials | DefaultCredentials が要求と共に送信されるかどうかを制御する Boolean 値を取得または設定します。 |

SmtpClient メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | Send | オーバーロードされます。 電子メール メッセージを、配信用 SMTP サーバーに送信します。これらのメソッドは、メッセージの送信中はブロックします。 |
![]() | SendAsync | オーバーロードされます。 電子メールを送信します。これらのメソッドは、呼び出し元のスレッドをブロックしません。 |
![]() | SendAsyncCancel | 電子メール メッセージを送信する非同期操作をキャンセルします。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnSendCompleted | SendCompleted イベントを発生させます。 |

SmtpClient メンバ
アプリケーションが SMTP (Simple Mail Transfer Protocol) を使用して電子メールを送信できるようにします。
SmtpClient データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | ClientCertificates | SSL (Secure Sockets Layer) 接続を確立するために使用する必要のある証明書を指定します。 |
![]() | Credentials | 差出人の認証に使用する資格情報を取得または設定します。 |
![]() | DeliveryMethod | 送信メッセージの処理方法を指定します。 |
![]() | EnableSsl | SmtpClient が、接続を暗号化するために SSL (Secure Sockets Layer) を使用するかどうかを指定します。 |
![]() | Host | SMTP トランザクションで使用されるホストの名前または IP アドレスを取得または設定します。 |
![]() | PickupDirectoryLocation | ローカルの SMTP サーバーによって処理される電子メール メッセージをアプリケーションが保存するフォルダを取得または設定します。 |
![]() | Port | SMTP トランザクションで使用されるポートを取得または設定します。 |
![]() | ServicePoint | 電子メール メッセージの送信に使用するネットワーク接続を取得します。 |
![]() | Timeout | 同期的な Send 呼び出しがタイムアウトになるまでの時間を指定する値を取得または設定します。 |
![]() | UseDefaultCredentials | DefaultCredentials が要求と共に送信されるかどうかを制御する Boolean 値を取得または設定します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | Send | オーバーロードされます。 電子メール メッセージを、配信用 SMTP サーバーに送信します。これらのメソッドは、メッセージの送信中はブロックします。 |
![]() | SendAsync | オーバーロードされます。 電子メールを送信します。これらのメソッドは、呼び出し元のスレッドをブロックしません。 |
![]() | SendAsyncCancel | 電子メール メッセージを送信する非同期操作をキャンセルします。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnSendCompleted | SendCompleted イベントを発生させます。 |


- SmtpClientのページへのリンク