SmtpClient.SendAsync SmtpClient.SendAsync SmtpClient.SendAsync SmtpClient.SendAsync Method

정의

이메일 메시지를 보냅니다.Sends an email message. 이들 메서드는 호출 스레드를 차단하지 않습니다.These methods do not block the calling thread.

오버로드

SendAsync(MailMessage, Object) SendAsync(MailMessage, Object) SendAsync(MailMessage, Object) SendAsync(MailMessage, Object)

배달용 SMTP 서버로 지정된 이메일 메시지를 보냅니다.Sends the specified email message to an SMTP server for delivery. 이 메서드는 호출 스레드를 차단하지 않으며 작업이 완료될 때 호출된 메서드에 호출자가 개체를 전달하도록 허용합니다.This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes.

SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object)

배달용 SMTP 서버로 이메일 메시지를 보냅니다.Sends an email message to an SMTP server for delivery. 메시지의 보낸 사람, 받는 사람, 제목 및 메시지 본문은 String 개체를 사용하여 지정됩니다.The message sender, recipients, subject, and message body are specified using String objects. 이 메서드는 호출 스레드를 차단하지 않으며 작업이 완료될 때 호출된 메서드에 호출자가 개체를 전달하도록 허용합니다.This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes.

SendAsync(MailMessage, Object) SendAsync(MailMessage, Object) SendAsync(MailMessage, Object) SendAsync(MailMessage, Object)

배달용 SMTP 서버로 지정된 이메일 메시지를 보냅니다.Sends the specified email message to an SMTP server for delivery. 이 메서드는 호출 스레드를 차단하지 않으며 작업이 완료될 때 호출된 메서드에 호출자가 개체를 전달하도록 허용합니다.This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes.

public:
 void SendAsync(System::Net::Mail::MailMessage ^ message, System::Object ^ userToken);
public void SendAsync (System.Net.Mail.MailMessage message, object userToken);
member this.SendAsync : System.Net.Mail.MailMessage * obj -> unit
Public Sub SendAsync (message As MailMessage, userToken As Object)

매개 변수

message
MailMessage MailMessage MailMessage MailMessage

보낼 메시지가 들어 있는 MailMessage입니다.A MailMessage that contains the message to send.

userToken
Object Object Object Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 사용자 정의 개체입니다.A user-defined object that is passed to the method invoked when the asynchronous operation completes.

예외

messagenull인 경우message is null.

또는-or- Fromnull입니다.From is null.

SmtpClient에서 SendAsync 호출이 진행 중인 경우This SmtpClient has a SendAsync call in progress.

또는-or- To, CCBcc 속성에 지정된 받는 사람이 없습니다.There are no recipients specified in To, CC, and Bcc properties.

또는-or- DeliveryMethod 속성은 Network로 설정되고 Hostnull입니다.DeliveryMethod property is set to Network and Host is null.

또는-or- DeliveryMethod 속성이 Network로 설정되고 Host가 빈 문자열("")과 같습니다.DeliveryMethod property is set to Network and Host is equal to the empty string ("").

또는-or- DeliveryMethod 속성은 Network로 설정되고 Port는 0, 음수 또는 65,535보다 큽니다.DeliveryMethod property is set to Network and Port is zero, a negative number, or greater than 65,535.

이 개체가 삭제되었습니다.This object has been disposed.

SMTP 서버에 연결하지 못했습니다.The connection to the SMTP server failed.

또는-or- 인증에 실패했습니다.Authentication failed.

또는-or- 작업 시간이 초과되었습니다.The operation timed out. 또는-or- EnableSsltrue로 설정되지만 DeliveryMethod 속성은 SpecifiedPickupDirectory 또는 PickupDirectoryFromIis로 설정됩니다.EnableSsl is set to true but the DeliveryMethod property is set to SpecifiedPickupDirectory or PickupDirectoryFromIis.

또는-or- EnableSsltrue,로 설정되지만 SMTP 메일 서버는 응답에서 STARTTLS를 EHLO 명령에 알리지 않았습니다.EnableSsl is set to true, but the SMTP mail server did not advertise STARTTLS in the response to the EHLO command.

또는-or- To, CC 또는 Bcc에 있는 한 명 이상의 받는 사람에게 message를 배달하지 못한 경우The message could not be delivered to one or more of the recipients in To, CC, or Bcc.

예제

다음 코드 예제에서는이 메서드를 호출 하는 방법을 보여 줍니다.The following code example demonstrates calling this method.

#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 be the SMTP host.
        SmtpClient^ client = gcnew SmtpClient(args[1]);
        // Specify the email 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 email message.
        MailAddress^ to = gcnew MailAddress("ben@contoso.com");
        // Specify the message content.
        MailMessage^ message = gcnew MailMessage(from, to);
        message->Body = "This is a test email 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!");
    }
}

using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmtpExamples.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 be the SMTP host.
            SmtpClient client = new SmtpClient(args[0]);
            // Specify the email 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 email message.
            MailAddress to = new MailAddress("ben@contoso.com");
            // Specify the message content.
            MailMessage message = new MailMessage(from, to);
            message.Body = "This is a test email 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.");
        }
    }
}

Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mime
Imports System.Threading
Imports System.ComponentModel

Namespace Examples.SmtpExamples.Async
    Public Class SimpleAsynchronousExample
        Private Shared mailSent As Boolean = False
        Private Shared Sub SendCompletedCallback(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
            ' Get the unique identifier for this asynchronous operation.
            Dim token As String = CStr(e.UserState)

            If e.Cancelled Then
                Console.WriteLine("[{0}] Send canceled.", token)
            End If
            If e.Error IsNot Nothing Then
                Console.WriteLine("[{0}] {1}", token, e.Error.ToString())
            Else
                Console.WriteLine("Message sent.")
            End If
            mailSent = True
        End Sub
        Public Shared Sub Main(ByVal args() As String)
            ' Command line argument must the SMTP host.
            Dim client As New SmtpClient(args(0))
            ' Specify the email sender.
            ' Create a mailing address that includes a UTF8 character
            ' in the display name.
            Dim mailFrom As New MailAddress("jane@contoso.com", "Jane " & ChrW(&HD8) & " Clayton", System.Text.Encoding.UTF8)
            ' Set destinations for the email message.
            Dim mailTo As New MailAddress("ben@contoso.com")
            ' Specify the message content.
            Dim message As New MailMessage(mailFrom, mailTo)
            message.Body = "This is a test email message sent by an application. "
            ' Include some non-ASCII characters in body and subject.
            Dim someArrows As New String(New Char() {ChrW(&H2190), ChrW(&H2191), ChrW(&H2192), ChrW(&H2193)})
            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.
            AddHandler client.SendCompleted, AddressOf 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.
            Dim userState As String = "test message1"
            client.SendAsync(message, userState)
            Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.")
            Dim answer As String = Console.ReadLine()
            ' If the user canceled the send, and mail hasn't been sent yet,
            ' then cancel the pending operation.
            If answer.StartsWith("c") AndAlso mailSent = False Then
                client.SendAsyncCancel()
            End If
            ' Clean up.
            message.Dispose()
            Console.WriteLine("Goodbye.")
        End Sub
    End Class
End Namespace

설명

전자 메일을 보냈습니다 하거나 작업이 취소 된 경우 알림을 받으려면 이벤트 처리기를 추가 합니다 SendCompleted 이벤트입니다.To receive notification when the email has been sent or the operation has been canceled, add an event handler to the SendCompleted event. 취소할 수 있습니다는 SendAsync 를 호출 하 여 작업을 SendAsyncCancel 메서드.You can cancel a SendAsync operation by calling the SendAsyncCancel method.

호출한 후 SendAsync를 사용 하 여 다른 전자 메일 메시지를 보내려고 시도 하기 전에 완료 하려면 전자 메일 전송을 위해 기다려야 Send 또는 SendAsync합니다.After calling SendAsync, you must wait for the email transmission to complete before attempting to send another email message using Send or SendAsync.

이 메서드를 호출 하기 전에 합니다 Host 하 고 Port 관련 속성을 설정 하거나이 정보를 전달 하 여 구성 파일을 통해 설정 해야 합니다는 SmtpClient(String, Int32) 생성자입니다.Before calling this method, the Host and Port must be set through the configuration files by setting the relevant properties, or by passing this information into the SmtpClient(String, Int32) constructor.

SMTP 호스트 자격 증명에 필요한 경우이 메서드를 호출 하기 전에 설정 해야 합니다.If the SMTP host requires credentials, you must set them before calling this method. 자격 증명을 지정 하려면 사용 합니다 UseDefaultCredentials 또는 Credentials 속성입니다.To specify credentials, use the UseDefaultCredentials or Credentials properties.

표시 되 면를 SmtpException 예외를 확인 합니다 StatusCode 속성 이유를 찾으려면 작업이 실패 했습니다.If you receive an SmtpException exception, check the StatusCode property to find the reason the operation failed. SmtpException 작업이 실패 한 이유를 나타내는 내부 예외를 포함할 수도 있습니다.The SmtpException can also contain an inner exception that indicates the reason the operation failed.

사용 하 여 전자 메일을 보낼 때 SendAsync SMTP 서버에 유효한 것으로 일부 받는 및 다른 사람을 거부 하는 경우 여러 받는 사람에 게는 SmtpException 이 throw 됩니다는 NullReferenceException 내부 예외에 대 한 합니다.When sending email using SendAsync to multiple recipients, if the SMTP server accepts some recipients as valid and rejects others, a SmtpException is thrown with a NullReferenceException for the inner exception. 이 경우 SendAsync 받는 사람이 전자 메일 보내기에 실패 합니다.If this occurs, SendAsync fails to send email to any of the recipients.

애플리케이션을 검사 하 여 서버 인증서 유효성 검사 오류를 감지할 수 있습니다 합니다 Error 속성에 전달 합니다 SendCompletedEventHandler 대리자입니다.Your application can detect a server certificate validation error by examining the Error property passed into the SendCompletedEventHandler delegate.

합니다 Timeout 속성 영향을 주지 없습니다를 SendAsync 호출 합니다.The Timeout property does not have any effect on a SendAsync call.

전자 메일을 블록에서 SMTP 서버에 전송 되는 동안 보내고, 중 하나를 사용 합니다 Send 메서드.To send mail and block while it is transmitted to the SMTP server, use one of the Send methods.

참고

경우는 EnableSsl 속성이 true, 및 SMTP 메일 서버를 EHLO에 대 한 응답에서 STARTTLS 명령을 다음에 대 한 호출을 보급 하지 않습니다는 Send 또는 SendAsync 메서드를 발생 시킵니다는 SmtpException합니다.If the EnableSsl property is set to true, and the SMTP mail server does not advertise STARTTLS in the response to the EHLO command, then a call to the Send or SendAsync methods will throw an SmtpException.

보안

SmtpPermission
SMTP 서버에 연결 합니다.to connect to the SMTP server. 연결 된 열거형: ConnectAssociated enumeration: Connect

SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object) SendAsync(String, String, String, String, Object)

배달용 SMTP 서버로 이메일 메시지를 보냅니다.Sends an email message to an SMTP server for delivery. 메시지의 보낸 사람, 받는 사람, 제목 및 메시지 본문은 String 개체를 사용하여 지정됩니다.The message sender, recipients, subject, and message body are specified using String objects. 이 메서드는 호출 스레드를 차단하지 않으며 작업이 완료될 때 호출된 메서드에 호출자가 개체를 전달하도록 허용합니다.This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes.

public:
 void SendAsync(System::String ^ from, System::String ^ to, System::String ^ subject, System::String ^ body, System::Object ^ userToken);
public void SendAsync (string from, string to, string subject, string body, object userToken);
member this.SendAsync : string * string * string * string * obj -> unit
Public Sub SendAsync (from As String, to As String, subject As String, body As String, userToken As Object)

매개 변수

from
String String String String

메시지의 보낸 사람 주소 정보가 들어 있는 String입니다.A String that contains the address information of the message sender.

recipients
String String String String

메시지를 보낼 대상 주소가 들어 있는 String입니다.A String that contains the address that the message is sent to.

subject
String String String String

메시지의 제목 줄이 들어 있는 String입니다.A String that contains the subject line for the message.

body
String String String String

메시지 본문이 들어 있는 String입니다.A String that contains the message body.

userToken
Object Object Object Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 사용자 정의 개체입니다.A user-defined object that is passed to the method invoked when the asynchronous operation completes.

예외

fromnull입니다.from is null.

또는-or- recipientnull인 경우recipient is null.

fromEmpty인 경우from is Empty.

또는-or- recipientEmpty인 경우recipient is Empty.

SmtpClient에서 SendAsync 호출이 진행 중인 경우This SmtpClient has a SendAsync call in progress.

또는-or- DeliveryMethod 속성은 Network로 설정되고 Hostnull입니다.DeliveryMethod property is set to Network and Host is null.

또는-or- DeliveryMethod 속성이 Network로 설정되고 Host가 빈 문자열("")과 같습니다.DeliveryMethod property is set to Network and Host is equal to the empty string ("").

또는-or- DeliveryMethod 속성은 Network로 설정되고 Port는 0, 음수 또는 65,535보다 큽니다.DeliveryMethod property is set to Network and Port is zero, a negative number, or greater than 65,535.

이 개체가 삭제되었습니다.This object has been disposed.

SMTP 서버에 연결하지 못했습니다.The connection to the SMTP server failed.

또는-or- 인증에 실패했습니다.Authentication failed.

또는-or- 작업 시간이 초과되었습니다.The operation timed out. 또는-or- EnableSsltrue로 설정되지만 DeliveryMethod 속성은 SpecifiedPickupDirectory 또는 PickupDirectoryFromIis로 설정됩니다.EnableSsl is set to true but the DeliveryMethod property is set to SpecifiedPickupDirectory or PickupDirectoryFromIis.

또는-or- EnableSsltrue,로 설정되지만 SMTP 메일 서버는 응답에서 STARTTLS를 EHLO 명령에 알리지 않았습니다.EnableSsl is set to true, but the SMTP mail server did not advertise STARTTLS in the response to the EHLO command.

또는-or- recipients에 있는 한 명 이상의 받는 사람에게 메시지를 배달하지 못한 경우The message could not be delivered to one or more of the recipients in recipients.

설명

전자 메일을 보냈습니다 하거나 작업이 취소 된 경우 알림을 받으려면 이벤트 처리기를 추가 합니다 SendCompleted 이벤트입니다.To receive notification when the email has been sent or the operation has been canceled, add an event handler to the SendCompleted event. 취소할 수 있습니다는 SendAsync 를 호출 하 여 작업을 SendAsyncCancel 메서드.You can cancel a SendAsync operation by calling the SendAsyncCancel method.

호출한 후 SendAsync를 사용 하 여 다른 전자 메일 메시지를 보내려고 시도 하기 전에 완료 하려면 전자 메일 전송을 위해 기다려야 Send 또는 SendAsync합니다.After calling SendAsync, you must wait for the email transmission to complete before attempting to send another email message using Send or SendAsync.

이 메서드를 호출 하기 전에 Host 하 고 Port 구성 파일을 통해 또는 속성을 설정 하거나이 정보를 전달 하 여 속성을 설정 해야 합니다는 SmtpClient(String, Int32) 생성자입니다.Before calling this method, the Host and Port properties must be set either through the configuration files or by setting the properties or passing this information into the SmtpClient(String, Int32) constructor.

SMTP 호스트 자격 증명에 필요한 경우이 메서드를 호출 하기 전에 설정 해야 합니다.If the SMTP host requires credentials, you must set them before calling this method. 자격 증명을 지정 하려면 사용 합니다 UseDefaultCredentials 또는 Credentials 속성입니다.To specify credentials, use the UseDefaultCredentials or Credentials property.

표시 되 면를 SmtpException 예외를 확인 합니다 StatusCode 속성 이유를 찾으려면 작업이 실패 했습니다.If you receive an SmtpException exception, check the StatusCode property to find the reason the operation failed. SmtpException 작업이 실패 한 이유를 나타내는 내부 예외를 포함할 수도 있습니다.The SmtpException can also contain an inner exception that indicates the reason the operation failed.

사용 하 여 전자 메일을 보낼 때 SendAsync SMTP 서버에 유효한 것으로 일부 받는 및 다른 사람을 거부 하는 경우 여러 받는 사람에 게는 SmtpException 이 throw 됩니다는 NullReferenceException 내부 예외에 대 한 합니다.When sending email using SendAsync to multiple recipients, if the SMTP server accepts some recipients as valid and rejects others, a SmtpException is thrown with a NullReferenceException for the inner exception. 이 경우 SendAsync 받는 사람이 전자 메일 보내기에 실패 합니다.If this occurs, SendAsync fails to send email to any of the recipients.

애플리케이션을 검사 하 여 서버 인증서 유효성 검사 오류를 감지할 수 있습니다 합니다 Error 속성에 전달 합니다 SendCompletedEventHandler 대리자입니다.Your application can detect a server certificate validation error by examining the Error property passed into the SendCompletedEventHandler delegate.

합니다 Timeout 속성 영향을 주지 없습니다를 SendAsync 호출 합니다.The Timeout property does not have any effect on a SendAsync call.

전자 메일을 블록에서 SMTP 서버에 전송 되는 동안 보내고, 중 하나를 사용 합니다 Send 메서드.To send mail and block while it is transmitted to the SMTP server, use one of the Send methods.

참고

경우는 EnableSsl 속성이 true, 및 SMTP 메일 서버를 EHLO에 대 한 응답에서 STARTTLS 명령을 다음에 대 한 호출을 보급 하지 않습니다는 Send 또는 SendAsync 메서드를 발생 시킵니다는 SmtpException합니다.If the EnableSsl property is set to true, and the SMTP mail server does not advertise STARTTLS in the response to the EHLO command, then a call to the Send or SendAsync methods will throw an SmtpException.

보안

SmtpPermission
SMTP 서버에 연결 합니다.To connect to the SMTP server. 연결 된 열거형: ConnectAssociated enumeration: Connect

적용 대상