SmtpException 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示在 SmtpClient 無法完成 Send 或 SendAsync 作業時擲回的例外狀況。
public ref class SmtpException : Exception
public class SmtpException : Exception
[System.Serializable]
public class SmtpException : Exception
type SmtpException = class
inherit Exception
interface ISerializable
type SmtpException = class
inherit Exception
[<System.Serializable>]
type SmtpException = class
inherit Exception
interface ISerializable
Public Class SmtpException
Inherits Exception
- 繼承
- 衍生
- 屬性
- 實作
範例
下列程式代碼範例會在擲回例外狀況時 SmtpException 顯示錯誤訊息。
static void RetryIfBusy( String^ server )
{
MailAddress^ from = gcnew MailAddress( L"ben@contoso.com" );
MailAddress^ to = gcnew MailAddress( L"jane@contoso.com" );
MailMessage^ message = gcnew MailMessage( from,to );
// message.Subject = "Using the SmtpClient class.";
message->Subject = L"Using the SmtpClient class.";
message->Body = L"Using this feature, you can send an email message from an application very easily.";
// Add a carbon copy recipient.
MailAddress^ copy = gcnew MailAddress( L"Notifications@contoso.com" );
message->CC->Add( copy );
SmtpClient^ client = gcnew SmtpClient( server );
// Include credentials if the server requires them.
client->Credentials = dynamic_cast<ICredentialsByHost^>(CredentialCache::DefaultNetworkCredentials);
Console::WriteLine( L"Sending an email message to {0} using the SMTP host {1}.", to->Address, client->Host );
try
{
client->Send( message );
}
catch ( SmtpFailedRecipientsException^ ex )
{
for ( int i = 0; i < ex->InnerExceptions->Length; i++ )
{
SmtpStatusCode status = ex->InnerExceptions[ i ]->StatusCode;
if ( status == SmtpStatusCode::MailboxBusy || status == SmtpStatusCode::MailboxUnavailable )
{
Console::WriteLine( L"Delivery failed - retrying in 5 seconds." );
System::Threading::Thread::Sleep( 5000 );
client->Send( message );
}
else
{
Console::WriteLine( L"Failed to deliver message to {0}", ex->InnerExceptions[ i ] );
}
}
}
catch ( Exception^ ex )
{
Console::WriteLine(L"Exception caught in RetryIfBusy(): {0}",
ex->ToString() );
}
finally
{
client->~SmtpClient();
}
}
public static void RetryIfBusy(string server)
{
MailAddress from = new MailAddress("ben@contoso.com");
MailAddress to = new MailAddress("jane@contoso.com");
MailMessage message = new MailMessage(from, to);
// message.Subject = "Using the SmtpClient class.";
message.Subject = "Using the SmtpClient class.";
message.Body = @"Using this feature, you can send an email message from an application very easily.";
// Add a carbon copy recipient.
MailAddress copy = new MailAddress("Notifications@contoso.com");
message.CC.Add(copy);
SmtpClient client = new SmtpClient(server);
// Include credentials if the server requires them.
client.Credentials = (ICredentialsByHost)CredentialCache.DefaultNetworkCredentials;
Console.WriteLine("Sending an email message to {0} using the SMTP host {1}.",
to.Address, client.Host);
try
{
client.Send(message);
}
catch (SmtpFailedRecipientsException ex)
{
for (int i = 0; i < ex.InnerExceptions.Length; i++)
{
SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
if (status == SmtpStatusCode.MailboxBusy ||
status == SmtpStatusCode.MailboxUnavailable)
{
Console.WriteLine("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000);
client.Send(message);
}
else
{
Console.WriteLine("Failed to deliver message to {0}",
ex.InnerExceptions[i].FailedRecipient);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception caught in RetryIfBusy(): {0}",
ex.ToString());
}
}
備註
屬性 StatusCode 包含 SMTP 伺服器傳回的狀態代碼。
建構函式
SmtpException() |
初始化 SmtpException 類別的新執行個體。 |
SmtpException(SerializationInfo, StreamingContext) |
已淘汰.
初始化 SmtpException 類別的新執行個體,這個執行個體是來自 SerializationInfo 和 StreamingContext 類別的指定執行個體。 |
SmtpException(SmtpStatusCode) |
使用指定的狀態碼,初始化 SmtpException 類別的新執行個體。 |
SmtpException(SmtpStatusCode, String) |
使用指定的狀態碼和錯誤訊息,初始化 SmtpException 類別的新執行個體。 |
SmtpException(String) |
使用指定的錯誤訊息,初始化 SmtpException 類別的新執行個體。 |
SmtpException(String, Exception) |
使用指定的錯誤訊息和內部例外狀況,初始化 SmtpException 類別的新執行個體。 |
屬性
Data |
取得鍵值組的集合,這些鍵值組會提供關於例外狀況的其他使用者定義資訊。 (繼承來源 Exception) |
HelpLink |
取得或設定與這個例外狀況相關聯的說明檔連結。 (繼承來源 Exception) |
HResult |
取得或設定 HRESULT,它是指派給特定例外狀況的編碼數值。 (繼承來源 Exception) |
InnerException |
取得造成目前例外狀況的 Exception 執行個體。 (繼承來源 Exception) |
Message |
取得描述目前例外狀況的訊息。 (繼承來源 Exception) |
Source |
取得或設定造成錯誤的應用程式或物件的名稱。 (繼承來源 Exception) |
StackTrace |
取得呼叫堆疊上即時運算框架的字串表示。 (繼承來源 Exception) |
StatusCode |
取得在傳送電子郵件訊息時,SMTP 伺服器所傳回的狀態碼。 |
TargetSite |
取得擲回目前例外狀況的方法。 (繼承來源 Exception) |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetBaseException() |
在衍生類別中覆寫時,傳回一或多個後續的例外狀況的根本原因 Exception。 (繼承來源 Exception) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
已淘汰.
以序列化 SerializationInfo 所需的資料填入 SmtpException 執行個體。 |
GetType() |
取得目前執行個體的執行階段類型。 (繼承來源 Exception) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
建立並傳回目前例外狀況的字串表示。 (繼承來源 Exception) |
事件
SerializeObjectState |
已淘汰.
當例外狀況序列化,以建立包含例外狀況相關序列化資料的例外狀況狀態物件時,就會發生此事件。 (繼承來源 Exception) |
明確介面實作
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
以序列化 SerializationInfo 所需的資料填入 SmtpException 執行個體。 |