この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SmtpClient クラス

 

公開日: 2016年10月

簡易メール転送プロトコル (SMTP) を使用して電子メールを送信するアプリケーションを使用します。

名前空間:   System.Net.Mail
アセンブリ:  System (System.dll 内)

System.Object
  System.Net.Mail.SmtpClient

public class SmtpClient : IDisposable

名前説明
System_CAPS_pubmethodSmtpClient()

新しいインスタンスを初期化、 SmtpClient 構成ファイルの設定を使用して、クラスです。

System_CAPS_pubmethodSmtpClient(String)

新しいインスタンスを初期化、 SmtpClient クラスにより、指定した SMTP サーバーを使用して電子メールを送信します。

System_CAPS_pubmethodSmtpClient(String, Int32)

新しいインスタンスを初期化、 SmtpClient クラスにより、指定した SMTP サーバーとポートを使用して電子メールを送信します。

名前説明
System_CAPS_pubpropertyClientCertificates

指定する証明書は、Secure Sockets Layer (SSL) 接続を確立するために使用する必要があります。

System_CAPS_pubpropertyCredentials

取得または送信者の認証に使用する資格情報を設定します。

System_CAPS_pubpropertyDeliveryFormat

取得または設定で使用される配信形式 SmtpClient 電子メールを送信します。

System_CAPS_pubpropertyDeliveryMethod

どのように送信する電子メール メッセージの処理を指定します。

System_CAPS_pubpropertyEnableSsl

指定するかどうか、 SmtpClient Secure Sockets Layer (SSL) を使用して接続を暗号化します。

System_CAPS_pubpropertyHost

取得または名または SMTP トランザクションで使用されるホストの IP アドレスを設定します。

System_CAPS_pubpropertyPickupDirectoryLocation

取得またはアプリケーションがローカルの SMTP サーバーで処理するメール メッセージを保存するフォルダーを設定します。

System_CAPS_pubpropertyPort

取得または SMTP トランザクションで使用されるポートを設定します。

System_CAPS_pubpropertyServicePoint

電子メール メッセージの送信に使用するネットワーク接続を取得します。

System_CAPS_pubpropertyTargetName

取得または拡張保護を使用する場合は、認証に使用するサービス プロバイダー名 (SPN) を設定します。

System_CAPS_pubpropertyTimeout

取得するまでの時間を指定する値を設定または同期 Send 呼び出しがタイムアウトします。

System_CAPS_pubpropertyUseDefaultCredentials

取得または設定、 Boolean 値を制御するのかどうか、 DefaultCredentials 要求と共に送信します。

名前説明
System_CAPS_pubmethodDispose()

終了メッセージを SMTP サーバーに送信する、適切に TCP 接続を終了およびの現在のインスタンスによって使用されているすべてのリソースを解放、 SmtpClient クラスです。

System_CAPS_protmethodDispose(Boolean)

終了メッセージを SMTP サーバーに送信 TCP 接続を終了、適切の現在のインスタンスによって使用されているすべてのリソースを解放、 SmtpClient クラス、および必要に応じてマネージ リソースを破棄します。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_protmethodOnSendCompleted(AsyncCompletedEventArgs)

SendCompleted イベントを発生させます。

System_CAPS_pubmethodSend(MailMessage)

指定したメッセージを配信用の SMTP サーバーに送信します。

System_CAPS_pubmethodSend(String, String, String, String)

指定した電子メール メッセージを配信用の SMTP サーバーに送信します。 メッセージの送信者、受信者、件名、およびメッセージ本文を使用して指定 String オブジェクトです。

System_CAPS_pubmethodSendAsync(MailMessage, Object)

指定した電子メール メッセージを配信用の SMTP サーバーに送信します。 このメソッドは、呼び出し元のスレッドをブロックしませんし、オブジェクトを渡し、操作が完了したときに呼び出されるメソッドを呼び出し元を開きます。

System_CAPS_pubmethodSendAsync(String, String, String, String, Object)

配信用の SMTP サーバーに電子メール メッセージを送信します。 メッセージの送信者、受信者、件名、およびメッセージ本文を使用して指定 String オブジェクトです。 このメソッドは、呼び出し元のスレッドをブロックしませんし、オブジェクトを渡し、操作が完了したときに呼び出されるメソッドを呼び出し元を開きます。

System_CAPS_pubmethodSendAsyncCancel()

電子メール メッセージを送信する非同期操作をキャンセルします。

System_CAPS_pubmethodSendMailAsync(MailMessage)

非同期操作として配信用の SMTP サーバーを指定したメッセージを送信します。

System_CAPS_pubmethodSendMailAsync(String, String, String, String)

非同期操作として配信用の SMTP サーバーを指定したメッセージを送信します。 」を参照してください。 メッセージの送信者、受信者、件名、およびメッセージ本文を使用して指定 String オブジェクトです。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

名前説明
System_CAPS_pubeventSendCompleted

非同期の電子メールの送信操作が完了したときに発生します。

SmtpClient 配信用の SMTP サーバーに電子メールを送信するクラスを使用します。 利用可能な RFC 2821 で SMTP プロトコルが定義されている http://www.ietf.orgします。

次の表に示すようにクラスを使用して、使用して送信される電子メール メッセージの構築 SmtpClientします。

class

説明

Attachment

添付をファイルに表します。 このクラスを使用すると、ファイル、ストリーム、またはテキストを電子メール メッセージに添付できます。

MailAddress

送信者と受信者の電子メール アドレスを表します。

MailMessage

電子メール メッセージを表します。

構築し、を使用して電子メール メッセージの送信を SmtpClient, 、次の情報を指定する必要があります。

  • 電子メールを送信するために使用する SMTP ホスト サーバー。 参照してください、 HostPort プロパティです。

  • SMTP サーバーで必要な場合、認証の資格情報。 Credentials プロパティを参照してください。

  • 送信者の電子メール アドレス。 参照してください、 SendSendAsync メソッドが、 from パラメーター。 また、 MailMessage.From プロパティです。

  • 電子メール アドレスまたは受信者のアドレス。 参照してください、 SendSendAsync メソッドが、 recipient パラメーター。 また、 MailMessage.To プロパティです。

  • メッセージの内容。 参照してください、 SendSendAsync メソッドが、 body パラメーター。 また、 MailMessage.Body プロパティです。

電子メール メッセージに添付ファイルを含めるを使用して最初に、添付ファイルを作成、 Attachment クラス、およびを使って、メッセージに追加し、 MailMessage.Attachments プロパティです。 受信者と添付ファイルのファイルの種類で使用される電子メール リーダー、によって、一部の受信者は可能性があります、添付ファイルを読み取ることができません。 元の形式で添付ファイルを表示できないクライアントの場合は、使用して代替ビューを指定することができます、 MailMessage.AlternateViews プロパティです。

アプリケーションを使用する、またはマシン構成ファイルを指定するすべてのホスト、ポート、および資格情報の値を既定 SmtpClient オブジェクトです。 詳細については、「<mailSettings> 要素 (ネットワーク設定)」を参照してください。

SMTP サーバーに送信する電子メールの待機中に、電子メール メッセージとブロックを送信する 1 つの同期を使用して Send メソッドです。 電子メールの送信中の実行を続行する、プログラムのメイン スレッドを許可するように、非同期のいずれかの操作を使用して SendAsync メソッドです。 SendCompleted イベントが発生したときに、 SendAsync 操作が完了します。 このイベントを提供するには、追加する必要があります、 SendCompletedEventHandler に委任 SendCompletedします。 SendCompletedEventHandler デリゲートでの通知を処理するコールバック メソッドを参照する必要があります SendCompleted イベントです。 非同期の電子メール転送を取り消す場合にを使用して、 SendAsyncCancel メソッドです。

System_CAPS_noteメモ

進行中の電子メールの送信が呼び出すと SendAsync または Send にお届け、 InvalidOperationExceptionです。

現在のインスタンスによって確立された接続、 SmtpClient アプリケーションが同一の SMTP サーバーに複数のメッセージを送信したい場合に、SMTP サーバーへのクラスが再利用になることができます。 これは、認証や暗号化を使用すると、SMTP サーバーへの接続を確立します。 認証および TLS セッションを確立するプロセスは、負荷の高い操作を指定できます。 同じ SMTP サーバーに大量の電子メールを送信するときに、メッセージごとに接続を再確立するための要件は、パフォーマンスに大きな影響を与える可能性があります。 ニュースレターの配布、電子メールのステータス更新を送信またはアラートを電子メールで送信する大量の電子メール アプリケーションの数があります。 多くの電子メール クライアント アプリケーションは、ユーザーが SMTP サーバーへの接続が確立されたときに後で送信される多くの電子メール メッセージを作成できますオフラインのモードをサポートします。 特定の SMTP サーバー (インターネット サービス プロバイダーによって提供される) を他の SMTP サーバーにこの電子メールを転送するすべての SMTP メッセージを送信する電子メール クライアントで一般的になります。

SmtpClient クラスの実装は、同じサーバーへのすべてのメッセージに対して接続が再度確立のオーバーヘッドを回避できますに SMTP 接続をプールします。 アプリケーションで再利用と同じことがあります SmtpClient 同じ SMTP サーバーと多数の SMTP サーバーに多くのさまざまな電子メールを送信するオブジェクト。 その結果、アプリケーションが終了したら判断する方法はありませんを使用して、 SmtpClient オブジェクトとそれをクリーンアップするようにします。

SMTP セッションの終了すると、クライアントが接続を終了したいは、QUIT メッセージを送信するメッセージがあることを示すために、サーバーに送信する必要があります。 これにより、サーバーがクライアントからの接続に関連付けられているリソースを解放し、クライアントによって送信されたメッセージを処理できます。

SmtpClient クラスには [いいえ Finalize メソッド、アプリケーションを呼び出す必要がありますので Dispose を明示的にリソースを解放します。 Dispose メソッドは、指定された SMTP サーバーへのすべての確立された接続を反復処理、 Host プロパティと、TCP 接続を正常に終了後に終了メッセージを送信します。 Dispose メソッドで使用されるアンマネージ リソースも解放、 Socket オプションでマネージ リソースを破棄します。

Dispose を使い終わったら SmtpClient を呼び出します。 Dispose メソッドによって、SmtpClient は使用不可の状態になります。 呼び出した後 Dispose, 、に対するすべての参照を解放する必要があります、 SmtpClient ガベージ コレクターがメモリをクリアできるようにする、 SmtpClient によって占有されていた。

次のコード例では、電子メール メッセージを非同期的に送信を示します。


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;
        private 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.");
        }
    }
}

.NET Framework
2.0 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: