Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

SmtpClient-Klasse

Ermöglicht Anwendungen das Senden von E-Mail-Nachrichten mit SMTP (Simple Mail Transfer Protocol).

System.Object
  System.Net.Mail.SmtpClient

Namespace:  System.Net.Mail
Assembly:  System (in System.dll)
public class SmtpClient : IDisposable

Der SmtpClient-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeSmtpClient()Initialisiert eine neue Instanz der SmtpClient-Klasse mit den Einstellungen der Konfigurationsdatei.
Öffentliche MethodeSmtpClient(String)Initialisiert eine neue Instanz der SmtpClient-Klasse, die E-Mail-Nachrichten mithilfe des angegebenen SMTP-Servers sendet.
Öffentliche MethodeSmtpClient(String, Int32)Initialisiert eine neue Instanz der SmtpClient-Klasse, die E-Mail-Nachrichten mithilfe des angegebenen SMTP-Servers und -Anschlusses sendet.
Zum Seitenanfang
  NameBeschreibung
Öffentliche EigenschaftClientCertificatesGibt an, welche Zertifikate zum Herstellen der SSL (Secure Sockets Layer)-Verbindung verwendet werden sollen.
Öffentliche EigenschaftCredentialsRuft die Anmeldeinformationen zum Authentifizieren des Absenders ab oder legt diese fest.
Öffentliche EigenschaftDeliveryFormatRuft das Symbol ab bzw. legt das Format fest, das durch Übermittlungs SmtpClient verwendet wird, um E-Mail zu senden.
Öffentliche EigenschaftDeliveryMethodGibt an, wie ausgehende E-Mail-Nachrichten behandelt werden.
Öffentliche EigenschaftEnableSslGeben Sie an, ob der SmtpClient die Verbindung mit SSL (Secure Sockets Layer) verschlüsselt.
Öffentliche EigenschaftHostRuft den Namen oder die IP-Adresse des Hosts ab, der bzw. die für SMTP-Transaktionen verwendet wird, oder legt diese Informationen fest.
Öffentliche EigenschaftPickupDirectoryLocationRuft den Ordner ab, in dem Anwendungen vom lokalen SMTP-Server zu verarbeitende E-Mail-Nachrichten speichern, oder legt diesen fest.
Öffentliche EigenschaftPortRuft den für SMTP-Transaktionen verwendeten Anschluss ab oder legt diesen fest.
Öffentliche EigenschaftServicePointRuft die Netzwerkverbindung ab, die zum Übertragen der E-Mail-Nachricht verwendet wird.
Öffentliche EigenschaftTargetNameRuft den Dienstanbieternamen (SPN) ab, der bei Verwendung des erweiterten Schutzes zur Authentifizierung verwendet werden soll, oder legt ihn fest.
Öffentliche EigenschaftTimeoutRuft einen Wert ab, der die Zeitspanne bis zum Timeout eines synchronen Send-Aufrufs angibt, oder legt diesen fest.
Öffentliche EigenschaftUseDefaultCredentialsRuft einen Boolean-Wert ab, der steuert, ob mit den Anforderungen DefaultCredentials gesendet werden, oder legt diesen fest.
Zum Seitenanfang
  NameBeschreibung
Öffentliche MethodeDispose()Sendet eine QUIT-Meldung an den SMTP-Server, beendet die TCP-Verbindung ordnungsgemäß und gibt alle Ressourcen frei, die von der aktuellen Instanz der SmtpClient-Klasse verwendet werden.
Geschützte MethodeDispose(Boolean)Sendet eine QUIT-Meldung an den SMTP-Server, beendet die TCP-Verbindung ordnungsgemäß, gibt alle Ressourcen frei, die von der aktuellen Instanz der SmtpClient-Klasse verwendet werden, und gibt optional die verwalteten Ressourcen frei.
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeOnSendCompletedLöst das SendCompleted-Ereignis aus.
Öffentliche MethodeSend(MailMessage)Sendet die angegebene Nachricht an einen SMTP-Server für die Übermittlung.
Öffentliche MethodeSend(String, String, String, String)Sendet die angegebene E-Mail-Nachricht an einen SMTP-Server für die Übermittlung. Der Absender, die Empfänger, der Betreff und der Text der Nachricht werden mit String-Objekten angegeben.
Öffentliche MethodeSendAsync(MailMessage, Object)Sendet die angegebene E-Mail-Nachricht an einen SMTP-Server für die Übermittlung. Diese Methode blockiert den aufrufenden Thread nicht und ermöglicht dem Aufrufer die Übergabe eines Objekts an die Methode, die beim Abschluss des Vorgangs aufgerufen wird.
Öffentliche MethodeSendAsync(String, String, String, String, Object)Sendet eine E-Mail-Nachricht an einen SMTP-Server für die Übermittlung. Der Absender, die Empfänger, der Betreff und der Text der Nachricht werden mit String-Objekten angegeben. Diese Methode blockiert den aufrufenden Thread nicht und ermöglicht dem Aufrufer die Übergabe eines Objekts an die Methode, die beim Abschluss des Vorgangs aufgerufen wird.
Öffentliche MethodeSendAsyncCancelBricht einen asynchronen Vorgang zum Senden einer E-Mail-Nachricht ab.
Öffentliche MethodeSendMailAsync(MailMessage)Sendet die angegebene Meldung an einen SMTP-Server für die Übermittlung als asynchroner Vorgang.
Öffentliche MethodeSendMailAsync(String, String, String, String)Sendet die angegebene Meldung an einen SMTP-Server für die Übermittlung als asynchroner Vorgang. . Der Absender, die Empfänger, der Betreff und der Text der Nachricht werden mit String-Objekten angegeben.
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang
  NameBeschreibung
Öffentliches EreignisSendCompletedTritt ein, wenn das asynchrone Senden einer E-Mail-Nachricht abgeschlossen wurde.
Zum Seitenanfang

Die SmtpClient-Klasse wird zum Senden von E-Mail-Nachrichten an einen SMTP-Server für die Übermittlung verwendet. Das SMTP-Protokoll ist im RFC 2821 definiert, der unter http://www.ietf.org (nur auf Englisch verfügbar) zur Verfügung steht.

Mit den Klassen in der folgenden Tabelle werden E-Mail-Nachrichten erstellt, die mithilfe von SmtpClient gesendet werden können.

Klasse

Beschreibung

Attachment

Stellt Dateianlagen dar. Diese Klasse ermöglicht es Ihnen, Dateien, Streams oder Text an eine E-Mail-Nachricht anzufügen.

MailAddress

Stellt die E-Mail-Adresse des Absenders und des Empfängers dar.

MailMessage

Stellt eine E-Mail-Nachricht dar.

Um mit SmtpClient eine E-Mail-Nachricht zu erstellen und zu senden, müssen Sie die folgenden Informationen angeben:

  • Der SMTP-Hostserver, den Sie zum Senden von E-Mail-Nachrichten verwenden. Weitere Informationen finden Sie in der Host-Eigenschaft und der Port-Eigenschaft.

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

  • Die E-Mail-Adresse des Absenders. Siehe die Send-Methode und die SendAsync-Methode, die einen from-Parameter verwenden. Siehe auch die MailMessage.From-Eigenschaft.

  • Die E-Mail-Adressen der Empfänger. Siehe die Send-Methode und die SendAsync-Methode, die einen recipient-Parameter verwenden. Siehe auch die MailMessage.To-Eigenschaft.

  • Der Nachrichteninhalt. Siehe die Send-Methode und die SendAsync-Methode, die einen body-Parameter verwenden. Siehe auch die MailMessage.Body-Eigenschaft.

Um eine Anlage in eine E-Mail-Nachricht einzufügen, erstellen Sie zunächst die Anlage mit der Attachment-Klasse, und fügen Sie sie dann mit der MailMessage.Attachments-Eigenschaft zur Nachricht hinzu. Je nach dem von den Empfängern verwendeten E-Mail-Reader und dem Dateityp der Anlage können einige Empfänger die Anlage möglicherweise nicht lesen. Für Clients, die die Anlage nicht in ihrem ursprünglichen Format anzeigen können, können Sie mithilfe der MailMessage.AlternateViews-Eigenschaft alternative Ansichten festlegen.

Mit der Anwendungs- oder Computerkonfigurationsdatei können Sie Host- und Anschlussstandardwerte sowie Standardanmeldeinformationen für alle SmtpClient-Objekte angeben. Weitere Informationen finden Sie unter <mailSettings>-Element (Netzwerkeinstellungen).

Um die E-Mail-Nachricht zu senden und die Ausführung während des Wartens auf die Übertragung der E-Mail-Nachricht an den SMTP-Server zu blockieren, verwenden Sie eine der synchronen Send-Methoden. Um die weitere Ausführung des Hauptthreads des Programms während der Übertragung der E-Mail-Nachricht zuzulassen, verwenden Sie einer der asynchronen SendAsync-Methoden. Das SendCompleted-Ereignis wird ausgelöst, wenn ein SendAsync-Vorgang abgeschlossen wird. Um dieses Ereignis zu empfangen, müssen Sie SendCompleted einen SendCompletedEventHandler-Delegaten hinzufügen. Der SendCompletedEventHandler-Delegat muss auf eine Rückrufmethode verweisen, die die Benachrichtigung über SendCompleted-Ereignisse behandelt. Um eine asynchrone E-Mail-Übertragung abzubrechen, verwenden Sie die SendAsyncCancel-Methode.

HinweisHinweis

Wenn eine E-Mail-Übertragung gerade ausgeführt wird und Sie SendAsync oder Send erneut aufrufen, empfangen Sie eine InvalidOperationException.

Die von der aktuellen Instanz der SmtpClient-Klasse zum SMTP-Server hergestellte Verbindung kann wiederverwendet werden, wenn eine Anwendung mehrere Meldungen an den gleichen SMTP-Server senden möchte. Dies ist besonders nützlich, wenn Authentifizierung oder Verschlüsselung verwendet wird, um eine Verbindung zum SMTP-Server herzustellen. Das Authentifizieren und Einrichten einer TLS-Sitzung können aufwendige Operationen sein. Eine Anforderung, um erneut eine Verbindung für jede Meldung einzurichten, wenn eine große Menge von E-Mails zum gleichen SMTP-Server gesendet werden, kann bedeutende Auswirkungen auf die Leistung haben. Es gibt eine Reihe von Anwendungen für hohe E-Mail-Aufkommen, die E-Mail-Statusupdates, Newsletterverteilungen oder E-Mail-Warnungen senden. Auch unterstützen viele E-Mail-Clientanwendungen einen Offline-Betrieb, in dem Benutzer viele E-Mails verfassen können, die später gesendet werden, wenn eine Verbindung zum SMTP-Server hergestellt wird. Es ist typisch, dass ein E-Mail-Client alle SMTP-Meldungen an einen bestimmten SMTP-Server (bereitgestellt vom Internetdienstanbieter) sendet, der dann diese E-Mail an andere SMTP-Server weiterleitet.

Die SmtpClient-Klassenimplementierung legt SMTP-Verbindungen zusammen, damit es den Aufwand vermeiden kann, für jede Nachricht erneut eine Verbindung zum gleichen Server einzurichten. Eine Anwendung darf das gleiche SmtpClient-Objekt wiederverwenden, um viele unterschiedliche E-Mails an den gleichen SMTP-Server und viele unterschiedliche SMTP-Server zu senden. Daher gibt es keine Möglichkeit zu bestimmen, wann eine Anwendung das Verwenden des SmtpClient-Objekts beendet hat und es bereinigt werden sollte.

Wenn eine SMTP-Sitzung beendet wird und der Client die Verbindung beenden möchte, muss er eine QUIT-Meldung an den Server senden, um anzugeben, dass es keine weiteren Meldungen zu senden hat. Dies ermöglicht es dem Server, Ressourcen freizugeben, die der Verbindung vom Client zugeordnet sind und Meldungen verarbeiten, die vom Client gesendet wurden.

Die SmtpClient-Klasse verfügt über keine Finalize-Methode, deshalb muss eine Anwendung Dispose aufrufen, um explizit Ressourcen freizugeben. Die Dispose-Methode durchläuft alle hergestellten Verbindungen mit dem in der Host-Eigenschaft angegebenen SMTP-Server und sendet eine QUIT-Meldung, gefolgt vom normalen Beenden der TCP-Verbindung. Die Dispose-Methode gibt zudem die vom Socket verwendeten nicht verwalteten Ressourcen frei und verwirft optional 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 SmtpClient freigeben, sodass der von SmtpClient belegte Speicher bei der Garbage Collection wieder zugänglich gemacht werden kann.

Im folgenden Codebeispiel wird das asynchrone Senden einer E-Mail-Nachricht veranschaulicht.



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

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.