Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

SmtpClient-Klasse

 

Veröffentlicht: Oktober 2016

Ist die Anwendung zum Senden von E-mail mithilfe der SMTP Simple Mail Transfer Protocol ().

Namespace:   System.Net.Mail
Assembly:  System (in System.dll)

System.Object
  System.Net.Mail.SmtpClient

public class SmtpClient : IDisposable

NameBeschreibung
System_CAPS_pubmethodSmtpClient()

Initialisiert eine neue Instanz der der SmtpClient Klasse, indem Sie die Einstellungen in der Konfigurationsdatei.

System_CAPS_pubmethodSmtpClient(String)

Initialisiert eine neue Instanz der SmtpClient -Klasse, die e-Mails sendet, indem Sie mithilfe des angegebenen SMTP-Servers.

System_CAPS_pubmethodSmtpClient(String, Int32)

Initialisiert eine neue Instanz der SmtpClient -Klasse, die e-Mails sendet, indem Sie mit dem angegebenen SMTP-Server und Port.

NameBeschreibung
System_CAPS_pubpropertyClientCertificates

Geben Sie an, welche Zertifikate zum Herstellen der Verbindung (SSL = Secure Sockets Layer) verwendet werden soll.

System_CAPS_pubpropertyCredentials

Ruft ab oder legt die Anmeldeinformationen verwendet, um den Absender zu authentifizieren.

System_CAPS_pubpropertyDeliveryFormat

Ruft ab oder legt das übermittlungsformat von SmtpClient zum Senden von E-mail.

System_CAPS_pubpropertyDeliveryMethod

Gibt an, wie ausgehende e-Mail-Nachrichten behandelt werden.

System_CAPS_pubpropertyEnableSsl

Angeben, ob die SmtpClient Secure Sockets Layer (SSL) zum Verschlüsseln der Verbindung verwendet.

System_CAPS_pubpropertyHost

Ruft ab oder legt den Namen oder die IP-Adresse des Hosts für SMTP-Transaktionen verwendet.

System_CAPS_pubpropertyPickupDirectoryLocation

Ruft ab oder legt den Ordner zum Speichern von Clientanwendungen auf e-Mail-Nachrichten an den lokalen SMTP-Server verarbeitet werden.

System_CAPS_pubpropertyPort

Ruft ab oder legt den Port für SMTP-Transaktionen verwendet.

System_CAPS_pubpropertyServicePoint

Ruft die Netzwerkverbindung verwendet, um die e-Mail-Nachricht übertragen.

System_CAPS_pubpropertyTargetName

Ruft ab oder legt den Name (SPN), die bei Verwendung des erweiterten Schutzes zur Authentifizierung verwendet.

System_CAPS_pubpropertyTimeout

Ruft ab oder legt einen Wert, der angibt, die Zeitdauer nach dem synchronen Send Aufruf abläuft.

System_CAPS_pubpropertyUseDefaultCredentials

Ruft ab oder legt einen Boolean Wert, der steuert, ob die DefaultCredentials mit Anforderungen gesendet werden.

NameBeschreibung
System_CAPS_pubmethodDispose()

Sendet eine QUIT-Meldung an den SMTP-Server ordnungsgemäß beendet die TCP-Verbindung und gibt alle Ressourcen, die von der aktuellen Instanz von verwendet die SmtpClient Klasse.

System_CAPS_protmethodDispose(Boolean)

Sendet eine QUIT-Meldung an den SMTP-Server, ordnungsgemäß beendet die TCP-Verbindung und gibt alle Ressourcen, die von der aktuellen Instanz von verwendet die SmtpClient -Klasse und gibt optional die verwalteten Ressourcen frei.

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.(Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethodOnSendCompleted(AsyncCompletedEventArgs)

Löst das SendCompleted-Ereignis aus.

System_CAPS_pubmethodSend(MailMessage)

Sendet die angegebene Nachricht an einen SMTP-Server für die Übermittlung.

System_CAPS_pubmethodSend(String, String, String, String)

Die angegebene e-Mail-Nachricht an einen SMTP-Server für die Übermittlung gesendet. Der Absender, Empfänger, Betreff und Nachrichtentext werden mit angegeben String Objekte.

System_CAPS_pubmethodSendAsync(MailMessage, Object)

Die angegebene e-Mail-Nachricht an einen SMTP-Server für die Übermittlung gesendet. Diese Methode blockiert den aufrufenden Thread nicht und ermöglicht dem Aufrufer, die ein Objekt an die Methode übergeben, die aufgerufen wird, wenn der Vorgang abgeschlossen ist.

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

Sendet eine e-Mail-Nachricht an einen SMTP-Server für die Übermittlung. Der Absender, Empfänger, Betreff und Nachrichtentext werden mit angegeben String Objekte. Diese Methode blockiert den aufrufenden Thread nicht und ermöglicht dem Aufrufer, die ein Objekt an die Methode übergeben, die aufgerufen wird, wenn der Vorgang abgeschlossen ist.

System_CAPS_pubmethodSendAsyncCancel()

Bricht einen asynchronen Vorgang zum Senden einer e-Mail-Nachricht ab.

System_CAPS_pubmethodSendMailAsync(MailMessage)

Sendet die angegebene Nachricht an einen SMTP-Server für die Übermittlung als asynchronen Vorgang.

System_CAPS_pubmethodSendMailAsync(String, String, String, String)

Sendet die angegebene Nachricht an einen SMTP-Server für die Übermittlung als asynchronen Vorgang. . Der Absender, Empfänger, Betreff und Nachrichtentext werden mit angegeben String Objekte.

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

NameBeschreibung
System_CAPS_pubeventSendCompleted

Tritt auf, wenn ein asynchrone e-Mail-Send-Vorgang abgeschlossen ist.

Die SmtpClient -Klasse wird zum Senden von E-mail an einen SMTP-Server für die Übermittlung verwendet. Das SMTP-Protokoll ist in RFC 2821 auf definiert http://www.ietf.org.

In der folgenden Tabelle angezeigten Klassen werden verwendet, um e-Mail-Nachrichten erstellt, die über gesendet werden kann SmtpClient.

Klasse

Beschreibung

Attachment

Stellt Dateianlagen dar. Dieser Klasse können Sie Dateien, Streams oder Text an eine e-Mail-Nachricht anfügen.

MailAddress

Stellt die e-Mail-Adresse von Absender und Empfänger.

MailMessage

Stellt eine e-Mail-Nachricht dar.

Erstellen und Senden einer e-Mail-Nachricht mit SmtpClient, müssen Sie die folgende Informationen angeben:

  • Der SMTP-Host-Server, den Sie zum Senden von E-mail verwenden. Finden Sie unter der Host und Port Eigenschaften.

  • Anmeldeinformationen für die Authentifizierung, wenn der SMTP-Server erforderlich. Siehe Credentials-Eigenschaft.

  • Die e-Mail-Adresse des Absenders. Finden Sie unter der Send und SendAsync Methoden, die eine from Parameter. Siehe auch die MailMessage.From Eigenschaft.

  • Die E-mail-Adressen der Empfänger. Finden Sie unter der Send und SendAsync Methoden, die eine recipient Parameter. Siehe auch die MailMessage.To Eigenschaft.

  • Der Inhalt der Nachricht. Finden Sie unter der Send und SendAsync Methoden, die eine body Parameter. Siehe auch die MailMessage.Body Eigenschaft.

Um eine Anlage einer e-Mail-Nachricht einzufügen, erstellen Sie zuerst die Anlage mithilfe der Attachment Klasse, und fügen Sie es auf die Nachricht mit der MailMessage.Attachments Eigenschaft. Abhängig von der e-Mail-Reader verwendet, die von den Empfängern und den Dateityp der Anlage einige Empfänger die Anlage lesen möglicherweise nicht. Für Clients, die die Anlage in seiner ursprünglichen Form anzeigen können, können Sie alternative Ansichten angeben, mit der MailMessage.AlternateViews Eigenschaft.

Sie können die Anwendung oder Computerkonfigurationsdateien an Standard-Host, Port und Anmeldeinformationen für alle SmtpClient Objekte. Weitere Informationen finden Sie unter <mailSettings>-Element (Netzwerkeinstellungen).

Um die e-Mail-Nachricht senden und blockieren während des Wartens auf der e-Mails an den SMTP-Server übertragen werden, verwenden Sie eine der synchronen Send Methoden. Damit können des Programms Hauptthread fortgesetzt werden, während die e-Mail-Nachricht gesendet wird, verwenden Sie eine der asynchronen SendAsync Methoden. Das SendCompleted -Ereignis wird ausgelöst, wenn ein SendAsync abgeschlossen ist. Um dieses Ereignis zu empfangen, fügen Sie eine SendCompletedEventHandler Delegieren an SendCompleted. Die SendCompletedEventHandler Delegat muss eine Rückrufmethode, die Benachrichtigung behandelt verweisen SendCompleted Ereignisse. Um eine asynchrone e-Mail-Übertragung abzubrechen, verwenden die SendAsyncCancel Methode.

System_CAPS_noteHinweis

Wenn eine e-Mail-durchgeführt Übertragung, und Sie rufen SendAsync oder Send in diesem Fall erhalten Sie eine InvalidOperationException.

Die Verbindung von der aktuellen Instanz von der SmtpClient Klasse, um den SMTP-Server möglicherweise wiederverwendet werden, wenn eine Anwendung mehrere Nachrichten an den gleichen SMTP-Server senden möchte. Dies ist besonders nützlich, wenn Authentifizierung oder Verschlüsselung verwendet eine Verbindung mit dem SMTP-Server herstellen. Der Prozess für die Authentifizierung und Einrichten einer TLS-Sitzung kann teuer sein. Eine Anforderung, um eine Verbindung für jede Nachricht wiederherzustellen, wenn eine große Anzahl von e-Mails an den gleichen SMTP-Server senden konnte einen erheblichen Einfluss auf die Leistung haben. Es gibt eine Reihe von hohem Volumen e-Mail-Programmen, die e-Mail-Benachrichtigungen senden von statusaktualisierungen e-Mail-Newsletter-Distributionen. Auch unterstützen viele e-Mail-Clientanwendungen einen Offline-Modus, in dem Benutzer viele e-Mails verfassen können, die später gesendet werden, wenn eine Verbindung mit dem SMTP-Server hergestellt wird. Es ist typisch für einen e-Mail-Client alle SMTP-Nachrichten an einen bestimmten SMTP-Server (bereitgestellt vom Internet Service Provider) zu senden, der dann diese e-Mail an andere SMTP-Server weiterleitet.

Die SmtpClient Implementierung pools SMTP-Verbindungen, den Aufwand für das erneute Herstellen einer Verbindung für jede Nachricht auf denselben Server zu vermeiden. Eine Anwendung möglicherweise erneut verwenden, die gleiche SmtpClient Objekt, um viele unterschiedliche e-Mails an den gleichen SMTP-Server und viele unterschiedliche SMTP-Server senden. Daher besteht keine Möglichkeit zu bestimmen, wann eine Anwendung mithilfe der SmtpClient -Objekt, und es bereinigt werden sollte.

Wenn eine SMTP-Sitzung abgeschlossen ist, und der Client die Verbindung beenden möchte, muss er eine QUIT-Meldung an den Server aus, um anzugeben, dass es keine weiteren Nachrichten mehr senden senden. Dadurch kann der Server die Verbindung vom Client zugeordneten Ressourcen frei und Verarbeiten von Nachrichten, die vom Client gesendet wurden.

Die SmtpClient -Klasse verfügt über keine Finalize Methode, sodass eine Anwendung aufrufen, muss Dispose explizit Ressourcen freizugeben. Die Dispose Methode durchläuft alle hergestellte Verbindungen im angegebenen SMTP-Server die Host Eigenschaft und sendet eine QUIT-Meldung gefolgt von TCP-Verbindung ordnungsgemäß beendet. Die Dispose Methode auch die nicht verwalteten Ressourcen frei der Socket und verwirft optional auch die verwalteten Ressourcen.

Rufen Sie Dispose auf, wenn Sie SmtpClient nicht mehr benötigen. Die Dispose-Methode bewirkt, dass SmtpClient nicht mehr verwendet werden kann. Nach dem Aufruf von Dispose, müssen Sie alle Verweise auf Freigeben der SmtpClient damit der Garbage Collector den Speicher freigeben kann, die die SmtpClient belegte.

Im folgenden Codebeispiel wird veranschaulicht, senden eine e-Mail-Nachricht asynchron.


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
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: