E‑Mail‑Nachrichten mit benutzerdefinierten Optionen in C# erstellen
Neue E‑Mail‑Nachricht erstellen
Um eine neue E‑Mail‑Nachricht zu erstellen, können Sie verwenden MailMessage Klasse. Die MailMessage‑Klasse initialisiert außerdem Eigenschaften der erstellten E‑Mail‑Nachricht, wie die E‑Mail‑Adresse des Absenders, die E‑Mail‑Adressen der Empfänger, den Betreff der E‑Mail und den E‑Mail‑Body‑Inhalt im HTML‑Format.
Betrachten Sie den folgenden Code mit detaillierten Schritten, um eine neue E‑Mail‑Nachricht zu erstellen und deren Eigenschaften zu setzen.
- Erstellen Sie eine neue Instanz von MailMessage Klasse.
- Setzen Sie die From Eigenschaft für die E‑Mail‑Adresse des Absenders.
- Setzen Sie die To Eigenschaft für eine kommagetrennte Liste von E‑Mail‑Adressen der Empfänger.
- Setzen Sie die Subject Eigenschaft für den Betreff der E‑Mail.
- Setzen Sie die HtmlBody Eigenschaft für den HTML‑Inhalt des E‑Mail‑Bodies.
// Create a new instance of MailMessage class
var message = new MailMessage
{
From = "from@domain.com",
To = "to1@domain.com, to2@domain.com",
Subject = "New message",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
Standard‑Textcodierung festlegen
Legen Sie die Standard‑Textcodierung für die folgenden Eigenschaften fest:
- Von: Anzeigename
- An: Anzeigename
- Subject
- Body
Verwenden Sie die MailMessage.PreferredTextEncoding Eigenschaft, um sicherzustellen, dass sämtlicher Text in den obigen Eigenschaften korrekt in der E‑Mail‑Nachricht codiert wird. Das folgende Code‑Snippet zeigt, wie ein französisches Wort als Anzeigename für E‑Mail‑Adressen, Betreff und Body verwendet wird.
Mail‑Body festlegen
Nur‑Text‑Body festlegen
Ein Mail‑Body kann mit dem Body Eigenschaft des MailMessage Klasse.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
Body = "This is a plain text body"
};
HTML‑Body festlegen
Ein Mail‑Body kann ebenfalls angegeben werden mit HtmlBody Eigenschaft des MailMessage Klasse.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
Alternative Text festlegen
Eine alternative Ansicht in einer EML‑Datei ist eine zusätzliche Darstellung des E‑Mail‑Inhalts, die verwendet werden kann, um das Rendering der Nachricht zu verändern. Wenn Sie zum Beispiel eine Nachricht in HTML senden, möchten Sie möglicherweise auch eine Nur‑Text‑Version bereitstellen, falls einige Empfänger E‑Mail‑Reader nutzen, die HTML nicht darstellen können. Verwenden Sie zu diesem Zweck die AlternateView Klasse. Diese Klasse hat zwei Eigenschaften, LinkedResources und BaseUri, die verwendet werden, um URLs im Inhalt der E‑Mail aufzulösen.
- LinkedResources ist eine Sammlung von LinkedResource Objekte. Beim Rendern werden URLs im E‑Mail‑Inhalt zuerst mit den URLs im Content‑Link jedes LinkedResource Objekt in der LinkedResources Sammlung aufzulösen.
- BaseUri wird vom Mail‑Reader verwendet, um relative URLs im Body sowie relative Content‑Link‑URLs im LinkedResources Sammlung.
Betrachten Sie den folgenden Code mit detaillierten Schritten, um alternativen Text festzulegen.
- Erstellen Sie eine Instanz von MailMessage Klasse.
- Erstellen AlternateView um eine E‑Mail‑Nachricht mit dem im String angegebenen Inhalt anzuzeigen.
- Fügen Sie alternativen Text hinzu mit Add Methode von MailMessage.AlternateViews Sammlung.
// Declare message as MailMessage instance
var eml = new MailMessage();
// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");
// Adding alternate text
eml.AlternateViews.Add(alternate);
Kodierung des Mail‑Body festlegen
Aspose.Email verwendet das BodyEncoding Eigenschaft des MailMessage Klasse, um die Kodierung des E‑Mail‑Body festzulegen. Zum Beispiel:
eml.BodyEncoding = Encoding.UTF8;
Mehrere Empfänger angeben
Es gibt drei Möglichkeiten, Empfänger einer E‑Mail‑Nachricht anzugeben: über die Felder To, CC oder BCC.
-
To-Feld ist der Hauptempfänger Ihrer Nachricht. Sie können in diesem Feld ein oder mehrere E‑Mail‑Adressen, durch Kommas getrennt, eingeben. Das To‑Feld ist für jede E‑Mail‑Nachricht obligatorisch.
-
CC-Feld steht für Carbon Copy. Es wird verwendet, um eine Kopie Ihrer Nachricht an andere Personen zu senden, die am Thema interessiert oder beteiligt sind. Das CC‑Feld ist optional und kann ebenfalls mehrere E‑Mail‑Adressen enthalten. Die Empfänger im CC‑Feld können sehen, wer die Nachricht noch erhalten hat.
-
BCC-Feld steht für Blind Carbon Copy. Es ist dem CC‑Feld ähnlich, jedoch sind die Empfänger im BCC‑Feld für die anderen Empfänger verborgen. Das BCC‑Feld ist nützlich, wenn Sie die Privatsphäre einiger Empfänger schützen oder deren Posteingang nicht mit Antworten überfluten wollen. Das BCC‑Feld ist ebenfalls optional und kann mehrere E‑Mail‑Adressen enthalten.
Betrachten Sie den folgenden Code mit detaillierten Schritten, um mehrere Empfänger für eine E‑Mail‑Nachricht anzugeben.
Code‑Schritte:
- Erstellen Sie eine neue Instanz von MailMessage Klasse.
- Setzen Sie die From Eigenschaft für die E‑Mail‑Adresse des Absenders.
- Setzen Sie die To Eigenschaft zu einem Array von E‑Mail‑Adressen der Hauptempfänger.
- Setzen Sie die CC Eigenschaft zu einem Array von E‑Mail‑Adressen der Empfänger, die eine Kopie der E‑Mail erhalten.
- Setzen Sie die Bcc Eigenschaft zu einem Array von E‑Mail‑Adressen der Empfänger, die eine Blind‑Carbon‑Copy der E‑Mail erhalten werden.
Code‑Beispiel:
var eml = new MailMessage
{
// Specify From address
From = "sender@sender.com",
// Specify recipients’ mail addresses
To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
// Specify CC addresses
CC = {"CC1@receiver.com", "CC2@receiver.com"},
// Specify BCC addresses
Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};
Anzeigenamen zu E‑Mail‑Adressen hinzufügen
Zusätzlich zu einer E‑Mail‑Adresse kann ein Anzeigename angegeben werden, um den Absender oder Empfänger der E‑Mail zu identifizieren. Er kann den vollständigen Namen einer Person, einen Spitznamen oder eine andere Kennzeichnung enthalten.
Wenn eine E‑Mail‑Nachricht in einem E‑Mail‑Client oder Webmail‑Interface angezeigt wird, wird der Anzeigename normalerweise neben der E‑Mail‑Adresse angezeigt, sodass der Benutzer leichter erkennen kann, von wem die Nachricht stammt oder an wen sie gerichtet ist. Um Anzeigenamen zu E‑Mail‑Adressen in einer Nachricht hinzuzufügen, betrachten Sie den folgenden Code mit detaillierten Schritten:
- Laden Sie die E‑Mail‑Nachricht aus einer Datei mit
MailMessage.LoadMethode. - Setzen Sie den Absender der E‑Mail mittels
FromEigenschaft des eml‑Objekts durch Erstellen eines neuenMailAddressObjekt mit der E‑Mail‑Adresse und dem Anzeigenamen des Absenders. - Fügen Sie der E‑Mail einen Empfänger hinzu, indem Sie die
ToEigenschaft des eml‑Objekts; falls nötig, CC‑Liste (Carbon Copy) mit derCCEigenschaft, BCC‑Liste (Blind Carbon Copy) mithilfe derBccEigenschaft und rufen Sie dieAddMethode mit einem neuenMailAddressObjekt, das die E‑Mail‑Adresse und den Anzeigenamen des Empfängers enthält.
Code‑Beispiel:
// Load eml from file
var eml = MailMessage.Load(Data.Email/"test.eml");
eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");
// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));
// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));
Zusätzliche Eigenschaften festlegen
Mit Aspose.Email können Sie zusätzliche Eigenschaften des MailMessage Klasse wie zum Beispiel:
-
Date Eigenschaft – setzt Datum und Uhrzeit einer E‑Mail. Standardmäßig ist das Datum das tatsächliche Datum, an dem die Nachricht gesendet wurde, und die Uhrzeit ist die Sendezeit, wie sie in Microsoft Outlook angezeigt wird. Der tatsächliche Zustellzeitpunkt wird jedoch vom SMTP‑Server selbst im Mail‑Header hinzugefügt. Zum Beispiel ist unten ein gängiger Mail‑Header, bei dem Date setzt das Feld Date.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET // Add by SMTP server in delivery emails Received: from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700 // Add by SMTP server in delivery emails Return-Path: <xyz@oikoscucine.it> // Add by SMTP server in delivery emails Received: from 195.120.225.20 (HELO mail.oikoscucine.it) by aspose.com with esmtp (:1CYY+<LA*- *1WK@) id Q8,/O/-.N83@7-9M for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300 From: "XYZ" <xyz@oikoscucine.it> To: <abc@aspose.com> Subject: For ABC // Date will set the Date field, outlook will show this as Date: Thu, 22 Feb 2007 20:58:51 +0300 Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0" X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD== X-Read: 1 -
MailPriority Enumeration – gibt Prioritätsstufen für das Senden einer E‑Mail‑Nachricht an. Sie kann niedrig, normal oder hoch sein. Die Priorität beeinflusst die Übertragungsgeschwindigkeit und Zustellung.
-
MailSensitivity Enumeration – gibt fünf Empfindlichkeitsstufen an.
-
XMailer- gibt die Software an, die die E‑Mail‑Nachricht erstellt hat.
Das nachstehende Code‑Snippet zeigt, wie jede der oben besprochenen Eigenschaften verwendet werden kann.
var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
Date = DateTime.Now,
Priority = MailPriority.High,
Sensitivity = MailSensitivity.Normal,
Xmailer = "Aspose.Email"
};
Lesebestätigung anfordern
Um eine Lesebestätigung, verwenden Sie Aspose.Email DeliveryNotificationOptions Eigenschaft des MailMessage Klasse. Diese Eigenschaft enthält die Werte von DeliveryNotificationOptions Enumeration.
Betrachten Sie das folgende Code‑Beispiel:
// Create an Instance of MailMessage class
var eml = new MailMessage
{
// Specify From, To, HtmlBody, DeliveryNotificationOptions field
From = "sender@sender.com",
To = "receiver@receiver.com",
HtmlBody = "<html><body>This is the Html body</body></html>",
DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};
eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");
// Create an instance of SmtpClient Class
var client = new SmtpClient
{
// Specify your mailing host server, Username, Password and Port No
Host = "smtp.server.com",
Username = "Username",
Password = "Password",
Port = 25
};
try
{
// Client.Send will send this message
client.Send(eml);
// Display ‘Message Sent’, only if message sent successfully
Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
Hinweis: Anfragen für Lesebestätigungen werden möglicherweise nicht immer berücksichtigt, weil:
- Ein Mail‑Client implementiert diese Funktion möglicherweise nicht.
- Der Endbenutzer könnte diese Funktion deaktiviert haben.
- Der Endbenutzer kann sich entscheiden, keinen zu senden.
E‑Mail‑Header anpassen
E‑Mail-Header entsprechen einem Internet‑Standard und RFC definiert Header‑Felder, die in Internet‑E‑Mail-Nachrichten enthalten sind. Ein E‑Mail-Header kann mit dem MailMessage Klasse. Gängige Header‑Typen sind definiert in der HeaderType Klasse. Es ist eine versiegelte Klasse, die wie eine normale Enumeration funktioniert.
Normalerweise enthält ein E‑Mail‑Header diese Felder:
- To: Empfängeradressen können im To‑Feld angegeben werden. Die Empfänger im To‑Feld sind das primäre Publikum der Nachricht. Es können mehrere Empfängeradressen angegeben werden.
- From: Dieses Feld gibt die E‑Mail‑Adresse des Absenders an.
- Cc: Ermöglicht das Senden einer Nachricht als „Carbon Copy“ bzw. „Courtesy Copy“. Der Empfänger muss in der Regel nicht antworten oder handeln. Typischerweise werden Aufsichtspersonen über CC benachrichtigt.
- Bcc: Steht für Blind Carbon Copy und ermöglicht das Senden einer E‑Mail an einen Empfänger, der für andere Empfänger verborgen bleibt.
- ReplyTo: Dieses Header‑Feld gibt an, wohin der Absender Antworten erhalten möchte.
- Subject: Titel, Überschrift, Betreff. Wird oft als Thread‑Indikator für Nachrichten verwendet, die auf andere Nachrichten antworten oder sie kommentieren.
- Date: Dieser Header gibt ein Datum (und eine Uhrzeit) an. Normalerweise ist dies das Datum, zu dem die Nachricht verfasst und gesendet wurde.
- XMailer: Information über die Client‑Software des Absenders. Beispiel: X-Mailer: Aspose.Email XMailer wird von Mail‑Clients verwendet. Verschiedene Mail‑Clients haben unterschiedliche XMailer‑Werte. Der XMailer‑Wert von MS Outlook ist Microsoft Office Outlook, Build 11.0.5510. Er wird vom E‑Mail‑Empfänger oder -Leser ignoriert.
Normalerweise sieht ein E‑Mail-Header etwa so aus:
Reply-To: reply@reply.com
From: sender@sender.com
To: guangzhou@guangzhoo.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
Um einen E‑Mail‑Header anzupassen, folgen Sie diesen Code‑Schritte:
- Erstellen Sie eine Instanz von dem MailMessage Klasse.
- Geben Sie To, From, Cc, Bcc, ReplyTo, Subject, Date & XMailer mithilfe einer Instanz von MailMessage.
- Erstellen Sie eine Instanz von dem MimeHeader Klasse hinzu und geben Sie den benutzerdefinierten Header an.
- Fügen Sie den benutzerdefinierten Header zu dem MailMessage Instanz.
Das folgende Code‑Snippet zeigt, wie E‑Mail‑Header gesetzt werden.
var eml = new MailMessage
{
ReplyToList = "reply@reply.com",
From = "sender@sender.com",
To = "receiver1@receiver.com",
CC = "receiver2@receiver.com",
Bcc = "receiver3@receiver.com",
Subject = "test mail",
Date = new System.DateTime(2006, 3, 6),
XMailer = "Aspose.Email"
};
Das obige Code‑Snippet erzeugt einen E‑Mail‑Header im folgenden Format:
Reply-To: reply@reply.com
From: sender@sender.com
To: receiver1@receiver.com
CC: receiver2@receiver.com
BCC: receiver3@receiver.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
Header an einer bestimmten Stelle einfügen
Die Add Methode des HeaderCollection Klasse fügt einen Header am Ende der Sammlung ein. Es kann jedoch manchmal erforderlich sein, einen Header an einer bestimmten Stelle einzufügen. In diesem Fall ist die Add Methode wird nicht helfen. Um dies zu erreichen, verwende die Insert Methode des HeaderCollection. Wenn die Sammlung Header mit demselben Namen enthält, wird dieser Header vor anderen Headern mit demselben Namen eingefügt. Das folgende Code‑Snippet zeigt, wie ein Header an einer bestimmten Stelle eingefügt wird.
eml.Headers.Insert("Received", "Value");
Benutzerdefinierte Header hinzufügen
Ein E‑Mail‑Header kann mit dem MailMessage Klasse. Um einen benutzerdefinierten Header in einer E‑Mail‑Nachricht festzulegen, betrachten Sie das folgende Code‑Beispiel:
eml.Headers.Add("secret-header", "mystery");
Das obige Code‑Snippet erzeugt einen E‑Mail‑Header im folgenden Format:
secret-header: mystery
Signierte Nachrichten erstellen
Die Aspose.Email‑API bietet die Möglichkeit, signierte Nachrichten mit Zertifikaten zu erstellen. Die AttachSignature Methode des MailMessage Klasse kann verwendet werden, um eine Nachricht zum Speichern oder sogar zum Senden zu signieren mit dem SmtpClient.
Nachricht signieren
Das folgende Code‑Snippet zeigt, wie man eine Nachricht signiert.
Verwendung der Option für abgetrenntes Zertifikat
Webbasierte E‑Mail‑Clients können möglicherweise den Inhalt einer signierten Nachricht nicht anzeigen. Dies kann behoben werden, indem das Zertifikat vor dem Senden an webbasierte Clients abgetrennt wird. Das abgetrennte Flag in der überladenen Methode von AttachSignature kann dafür verwendet werden. Wenn sie auf true gesetzt ist, wird das Zertifikat von der E‑Mail getrennt und umgekehrt. Um den Körper einer signierten Nachricht in webbasierten Clients zu sehen, müssen Sie erstellen MailMessage mit abgetrennter Signatur. Das folgende Code‑Snippet zeigt, wie man die Option für ein abgetrenntes Zertifikat verwendet.