Exporter (0) Imprimer
Développer tout

SmtpException, classe

Mise à jour : novembre 2007

Représente l'exception qui est levée lorsque SmtpClient n'est pas capable de terminer une opération Send ou SendAsync.

Espace de noms :  System.Net.Mail
Assembly :  System (dans System.dll)

[SerializableAttribute]
public class SmtpException : Exception, 
	ISerializable
/** @attribute SerializableAttribute */ 
public class SmtpException extends Exception implements ISerializable
public class SmtpException extends Exception implements ISerializable

La propriété StatusCode contient le code d'état retourné par le serveur SMTP.

L'exemple de code suivant affiche un message d'erreur lorsque l'exception SmtpException est levée.

		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 e-mail 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 e-mail 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() );
            }
        }


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.set_Subject("Using the SmtpClient class.");
    message.set_Body("Using this feature, you can send an e-mail message "
        + "from an application very easily.");
    // Add a carbon copy recipient.
    MailAddress copy = new MailAddress("Notifications@contoso.com");
    message.get_CC().Add(copy);
    SmtpClient client = new SmtpClient(server);
    // Include credentials if the server requires them.
    client.set_Credentials((ICredentialsByHost)(CredentialCache.
        get_DefaultNetworkCredentials()));
    Console.WriteLine("Sending an e-mail message to {0} using the SMTP " 
        + "host {1}.", to.get_Address(), client.get_Host());
    try {
        client.Send(message);
    }
    catch (SmtpFailedRecipientsException ex) {
        for (int i = 0; i < ex.get_InnerExceptions().get_Length(); i++) {
            SmtpStatusCode status = ex.get_InnerExceptions()[i].get_StatusCode();
            if (status.Equals(SmtpStatusCode.MailboxBusy) 
                || status.Equals(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.get_InnerExceptions()[i].get_FailedRecipient());
            }
        }
    }
    catch (System.Exception ex)
    {
        Console.WriteLine("Exception caught in RetryIfBusy(): {0}", 
                    ex.ToString() );
    }

} //RetryIfBusy


Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft