SmtpClient.SendAsyncとは? わかりやすく解説

SmtpClient.SendAsync メソッド (String, String, String, String, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

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

Public Sub SendAsync ( _
    from As String, _
    recipients As String, _
    subject As String, _
    body As String, _
    userToken As Object _
)
Dim instance As SmtpClient
Dim from As String
Dim recipients As String
Dim subject As String
Dim body As String
Dim userToken As Object

instance.SendAsync(from, recipients, subject, body, userToken)
public void SendAsync (
    string from,
    string recipients,
    string subject,
    string body,
    Object userToken
)
public:
void SendAsync (
    String^ from, 
    String^ recipients, 
    String^ subject, 
    String^ body, 
    Object^ userToken
)
public void SendAsync (
    String from, 
    String recipients, 
    String subject, 
    String body, 
    Object userToken
)
public function SendAsync (
    from : String, 
    recipients : String, 
    subject : String, 
    body : String, 
    userToken : Object
)

パラメータ

from

メッセージの差出人のアドレス情報を格納している String。

recipients

メッセージの送信先のアドレスを格納している String。

subject

メッセージの件名を格納している String。

body

メッセージ本文を格納している String。

userToken

非同期操作の完了時に呼び出されるメソッドに渡されるユーザー定義のオブジェクト。

例外例外
例外の種類条件

ArgumentNullException

from が null 参照 (Visual Basic では Nothing) です。

または

recipient が null 参照 (Visual Basic では Nothing) です。

ArgumentException

from が Empty です。

または

recipient が Empty です。

InvalidOperationException

この SmtpClient は、SendAsync の呼び出し中です。

または

Host が null 参照 (Visual Basic では Nothing) です。

または

Host が空の文字列 ("") です。

または

Port が 0 です。

ObjectDisposedException

このオブジェクトは破棄されています。

SmtpException

SMTP サーバーへの接続に失敗しました。

または

認証に失敗しました。

または

操作がタイムアウトしました。

SmtpFailedRecipientsException

recipients 内の 1 人以上の受信者に、メッセージを配信できませんでした。

解説解説

電子メールが送信されたとき、またはその操作がキャンセルされたときに通知を受け取るには、SendCompleted イベントにイベント ハンドラを追加します。SendAsyncCancel メソッドを呼び出して、SendAsync 操作をキャンセルできます。

SendAsync を呼び出した後、Send または SendAsync を使用して別の電子メール メッセージを送信する前に、電子メールの伝送が完了するまで待機する必要があります。

このメソッドを呼び出す前に、構成ファイルを使用して関連するプロパティを設定するか、またはこの情報を SmtpClient(String,Int32) コンストラクタに渡して、Host プロパティと Port プロパティを設定する必要があります。

SMTP ホストが資格情報を要求する場合、このメソッドを呼び出す前にこれらを設定する必要があります。資格情報を指定するには、UseDefaultCredentials プロパティまたは Credentials プロパティを使用します。

SmtpException 例外が発生した場合は、StatusCode プロパティをチェックして操作が失敗した理由を確認してください。SmtpException は、操作が失敗した理由を示す内部例外を格納することもできます。

アプリケーションでは、SendCompletedEventHandler デリゲートに渡された Error プロパティを調べることで、サーバー証明書の検証エラーを検出できます。

Timeout プロパティは、SendAsync 呼び出しに対しては影響を与えません。

メールを送信し、SMTP サーバーへの送信中はブロックするには、いずれかの Send メソッドを使用します。

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
SmtpClient クラス
SmtpClient メンバ
System.Net.Mail 名前空間

SmtpClient.SendAsync メソッド


SmtpClient.SendAsync メソッド (MailMessage, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

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

Public Sub SendAsync ( _
    message As MailMessage, _
    userToken As Object _
)
Dim instance As SmtpClient
Dim message As MailMessage
Dim userToken As Object

instance.SendAsync(message, userToken)
public void SendAsync (
    MailMessage message,
    Object userToken
)
public:
void SendAsync (
    MailMessage^ message, 
    Object^ userToken
)
public void SendAsync (
    MailMessage message, 
    Object userToken
)
public function SendAsync (
    message : MailMessage, 
    userToken : Object
)

パラメータ

message

送信するメッセージを格納した MailMessage。

userToken

非同期操作の完了時に呼び出されるメソッドに渡されるユーザー定義のオブジェクト。

例外例外
例外の種類条件

ArgumentNullException

MailMessage.From が null 参照 (Visual Basic では Nothing) です。

または

MailMessage.To が null 参照 (Visual Basic では Nothing) です。

または

message が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

To、CC、および BCC に受信者が指定されていません。

InvalidOperationException

この SmtpClient は、SendAsync の呼び出し中です。

または

Host が null 参照 (Visual Basic では Nothing) です。

または

Host が空の文字列 ("") です。

または

Port が 0 です。

ObjectDisposedException

このオブジェクトは破棄されています。

SmtpException

SMTP サーバーへの接続に失敗しました。

または

認証に失敗しました。

または

操作がタイムアウトしました。

SmtpFailedRecipientsException

To、CC、または BCC 内の 1 人以上の受信者に、message を配信できませんでした。

解説解説

電子メールが送信されたとき、またはその操作がキャンセルされたときに通知を受け取るには、SendCompleted イベントにイベント ハンドラを追加します。SendAsyncCancel メソッドを呼び出して、SendAsync 操作をキャンセルできます。

SendAsync を呼び出した後、Send または SendAsync を使用して別の電子メール メッセージを送信する前に、電子メールの伝送が完了するまで待機する必要があります。

このメソッドを呼び出す前に、構成ファイルを使用して関連するプロパティを設定するか、またはこの情報を SmtpClient(String,Int32) コンストラクタに渡して、Host と Port を設定する必要があります。

SMTP ホストが資格情報を要求する場合、このメソッドを呼び出す前にこれらを設定する必要があります。資格情報を指定するには、UseDefaultCredentials プロパティまたは Credentials プロパティを使用します。

SmtpException 例外が発生した場合は、StatusCode プロパティをチェックして操作が失敗した理由を確認してください。SmtpException は、操作が失敗した理由を示す内部例外を格納することもできます。

アプリケーションでは、SendCompletedEventHandler デリゲートに渡された Error プロパティを調べることで、サーバー証明書の検証エラーを検出できます。

Timeout プロパティは、SendAsync 呼び出しに対しては影響を与えません。

メールを送信し、SMTP サーバーへの送信中はブロックするには、いずれかの Send メソッドを使用します。

使用例使用例

メソッドの呼び出しについては、次のコード例を参照してください。

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!");
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
SmtpClient クラス
SmtpClient メンバ
System.Net.Mail 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「SmtpClient.SendAsync」の関連用語

SmtpClient.SendAsyncのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SmtpClient.SendAsyncのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS