E‑mailberichten maken met aangepaste opties in C#
Nieuw e-mailbericht maken
Om een nieuw e‑mailbericht te maken kunt u gebruiken MailMessage klasse. De MailMessage‑klasse initialiseert ook de eigenschappen van het gemaakte e‑mailbericht, zoals het e‑mailadres van de afzender, de e‑mailadressen van de ontvangers, het onderwerp van de e‑mail en de inhoud van de e‑mailbody in HTML‑formaat.
Bekijk de volgende code, met gedetailleerde stappen, om een nieuw e‑mailbericht te maken en de eigenschappen in te stellen.
- Maak een nieuw exemplaar van de MailMessage klasse.
- Stel de From eigenschap voor het e‑mailadres van de afzender.
- Stel de Aan eigenschap voor een komma‑gescheiden lijst van e‑mailadressen van de ontvangers.
- Stel de Subject eigenschap voor het onderwerp van de e‑mail.
- Stel de HtmlBody eigenschap voor de HTML‑inhoud van de e‑mailbody.
// 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>"
};
Standaardtekencodering instellen
Stel de standaardtekencodering in voor de volgende eigenschappen:
- Van: Weergavenaam
- Aan: Weergavenaam
- Subject
- Body
Gebruik de MailMessage.PreferredTextEncoding eigenschap om ervoor te zorgen dat alle tekst in de bovenstaande eigenschappen correct wordt gecodeerd in het e‑mailbericht. Het volgende code‑fragment toont hoe u een Frans woord gebruikt als weergavenaam voor e‑mailadressen, onderwerp en berichttekst.
E-mailtekst instellen
Platte‑tekst‑body instellen
Een e‑mailbody kan worden opgegeven met de Body eigenschap van de MailMessage klasse.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
Body = "This is a plain text body"
};
HTML‑body instellen
Een e‑mailbody kan ook worden opgegeven met gebruik van HtmlBody eigenschap van de MailMessage klasse.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
Alternatieve tekst instellen
Een alternatieve weergave in een EML‑bestand is een extra representatie van de e‑mailinhoud die kan worden gebruikt om een andere weergave van het e‑mailbericht te bieden. Bijvoorbeeld, als je een bericht in HTML verzendt, wil je misschien ook een platte tekst‑versie leveren voor het geval sommige ontvangers e‑mailreaders gebruiken die geen HTML kunnen weergeven. Gebruik daarvoor de AlternateView klasse. Deze klasse heeft twee eigenschappen, LinkedResources en BaseUri, die worden gebruikt om URL’s in de e-mailinhoud te resolveren.
- LinkedResources is een collectie van LinkedResource objecten. Bij weergave worden URL’s in de e‑mailinhoud eerst vergeleken met de URL’s in de Content Link van elk LinkedResource object in de LinkedResources collectie en opgelost.
- BaseUri wordt door de maillezer gebruikt om relatieve URL’s binnen de body op te lossen, en ook om relatieve Content‑Link‑URL’s op te lossen in de LinkedResources collectie.
Bekijk de volgende code met gedetailleerde stappen om een alternatieve tekst in te stellen.
- Maak een instantie van MailMessage klasse.
- Maak AlternateView om een e‑mailbericht weer te geven met de in de string opgegeven inhoud.
- Voeg alternatieve tekst toe met gebruik van Toevoegen methode van MailMessage.AlternateViews collectie.
// 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);
E‑mailbody‑codering opgeven
Aspose.Email gebruikt de BodyEncoding eigenschap van de MailMessage klasse om de e‑mailbody‑codering op te geven. Bijvoorbeeld:
eml.BodyEncoding = Encoding.UTF8;
Meerdere ontvangers opgeven
Er zijn drie manieren om ontvangers van een e‑mailbericht op te geven: met de To, CC of BCC velden.
-
To-veld is de hoofdontvanger van je bericht. Je kunt een of meer e‑mailadressen invoeren in dit veld, gescheiden door komma’s. Het To-veld is verplicht voor elk e‑mailbericht.
-
CC-veld staat voor carbon copy. Het wordt gebruikt om een kopie van je bericht naar andere personen te sturen die geïnteresseerd zijn of betrokken bij het onderwerp. Het CC-veld is optioneel en kan ook meerdere e‑mailadressen bevatten. De ontvangers in het CC-veld kunnen zien wie anders het bericht heeft ontvangen.
-
BCC-veld staat voor blind carbon copy. Het lijkt op het CC-veld, maar de ontvangers in het BCC-veld zijn verborgen voor de andere ontvangers. Het BCC-veld is handig wanneer je de privacy van sommige ontvangers wilt beschermen of hun inbox wilt ontlasten van antwoorden. Het BCC-veld is ook optioneel en kan meerdere e‑mailadressen bevatten.
Bekijk de volgende code, met gedetailleerde stappen, om meerdere ontvangers voor een e‑mailbericht op te geven.
Code stappen:
- Maak een nieuw exemplaar van de MailMessage klasse.
- Stel de From eigenschap voor het e‑mailadres van de afzender.
- Stel de Aan eigenschap naar een array van e‑mailadressen van de primaire ontvangers.
- Stel de CC eigenschap naar een array van e‑mailadressen van de ontvangers die een kopie van de e‑mail ontvangen.
- Stel de Bcc eigenschap naar een array van e‑mailadressen van de ontvangers die een blind carbon copy van de e‑mail ontvangen.
Codevoorbeeld:
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"}
};
Weergavenamen toevoegen aan e‑mailadressen
Naast een e‑mailadres kan een weergavenaam worden toegevoegd om de afzender of ontvanger van de e‑mail te identificeren. Het kan de volledige naam, bijnaam of een andere identificatie bevatten.
Wanneer een e‑mailbericht wordt weergegeven in een e‑mailclient of webmail‑interface, wordt de weergavenaam meestal naast het e‑mailadres getoond, waardoor het voor de gebruiker makkelijker wordt te identificeren van wie het bericht is of aan wie het adres is. Om weergavenamen toe te voegen aan e‑mailadressen in een e‑mailbericht, bekijk de volgende code met gedetailleerde stappen:
- Laad het e‑mailbericht vanuit een bestand met behulp van
MailMessage.Loadmethode. - Stel de afzender van de e‑mail in met de
Fromeigenschap van het eml-object door een nieuwMailAddressobject met het e‑mailadres en een weergavenaam van de afzender. - Voeg een ontvanger toe aan de e‑mail door de
Toeigenschap van het eml-object, voeg indien nodig een CC (Carbon Copy) lijst toe met behulp van deCCeigenschap, BCC (Blind Carbon Copy) lijst met behulp van deBcceigenschap en roep deAddmethode met een nieuwMailAddressobject dat het e‑mailadres en een weergavenaam van de ontvanger bevat.
Codevoorbeeld:
// 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 "));
Extra eigenschappen instellen
Met Aspose.Email kun je extra eigenschappen van de MailMessage klasse zoals:
-
Date eigenschap - stelt datum en tijd van een e‑mail in. Standaard is de datum de werkelijke datum waarop het bericht is verzonden, en de tijd is het tijdstip van verzending, zoals weergegeven door Microsoft Outlook. De werkelijke e‑mailbezorgtijd wordt echter door de SMTP‑server zelf toegevoegd aan de mailheader. Bijvoorbeeld, hieronder staat een veelvoorkomende mailheader, waarin Date stelt het veld Date in.
// 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 enumeratie - geeft prioriteitsniveaus aan voor het verzenden van een e‑mailbericht. Het kan laag, normaal of hoog zijn. Prioriteit beïnvloedt de transmissiesnelheid en bezorging.
-
MailSensitivity enumeratie - geeft vijf gevoeligheidsniveaus aan.
-
XMailer- geeft de software aan die het e‑mailbericht heeft aangemaakt.
Het codefragment hieronder laat zien hoe elk van de hierboven besproken eigenschappen kan worden gebruikt.
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"
};
Leesbevestiging aanvragen
Om een leesbevestiging, gebruik Aspose.Email DeliveryNotificationOptions eigenschap van de MailMessage klasse. Deze eigenschap bevat de waarden van de DeliveryNotificationOptions enumeratie.
Bekijk het volgende codevoorbeeld:
// 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());
}
Opmerking: Verzoeken om leesbevestigingen worden mogelijk niet altijd ingewilligd omdat:
- Een e-mailclient implementeert die functionaliteit mogelijk niet.
- De eindgebruiker kan die functionaliteit uitgeschakeld hebben.
- De eindgebruiker kan ervoor kiezen deze niet te verzenden.
E‑mailheaders aanpassen
E‑mailheaders vormen een internetstandaard en RFC definiëren headervelden die zijn opgenomen in internet‑e‑mailberichten. Een e‑mailheader kan worden opgegeven met behulp van de MailMessage klasse. Veelvoorkomende headertypen worden gedefinieerd in de HeaderType klasse. Het is een sealed‑klasse die fungeert als een normale enumeratie.
Normaal bevat een e‑mailheader deze velden:
- To: Ontvangersadressen kunnen in het To‑veld worden opgegeven. De ontvangers in het To‑veld vormen het primaire publiek van het bericht. Er kunnen meerdere ontvangersadressen zijn.
- From: Dit veld toont het e‑mailadres van de afzender van het bericht.
- Cc: Staat gebruikers toe een bericht als een "Carbon Copy" of "Courtesy Copy" te verzenden. De ontvanger wordt niet verwacht te reageren of actie te ondernemen. Gewoonlijk worden toezichthoudende personeelsleden op de hoogte gebracht met CC.
- Bcc: Staat voor Blind Carbon Copy, waarmee je een e‑mail naar een ontvanger kunt sturen die verborgen blijft voor andere ontvangers.
- ReplyTo: Dit header‑veld geeft aan waar de afzender de antwoorden naartoe wil laten gaan.
- Subject: Titel, onderwerp. Wordt vaak gebruikt als een thread‑indicator voor berichten die antwoorden op of commentaar geven op andere berichten.
- Date: Deze header geeft een datum (en tijd) aan. Normaal gesproken is dit de datum waarop het bericht is opgesteld en verzonden.
- XMailer: Informatie over de clientsoftware van de afzender. Voorbeeld: X-Mailer: Aspose.Email XMailer wordt gebruikt door e‑mailclients. Verschillende e‑mailclients hebben verschillende XMailer‑waarden. De XMailer‑waarde van MS Outlook is Microsoft Office Outlook, Build 11.0.5510. Het wordt genegeerd door de e‑mailontvanger of -lezer.
Normaal ziet een e-mailheader er ongeveer zo uit:
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
Om een e‑mailheader aan te passen, volg deze code stappen:
- Maak een instantie van de MailMessage klasse.
- Specificeer To, From, Cc, Bcc, ReplyTo, Subject, Date en XMailer met een instantie van de MailMessage.
- Maak een instantie van de MimeHeader klasse en specificeer de aangepaste header.
- Voeg de aangepaste header toe aan de MailMessage instantie.
Het volgende code‑fragment toont hoe u e‑mailheaders instelt.
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"
};
Het bovenstaande codefragment genereert een e‑mailheader in het volgende formaat:
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 op een specifieke locatie invoegen
De Toevoegen methode van de HeaderCollection klasse voegt een header toe aan het einde van de collectie. Het kan echter soms nodig zijn om een header op een specifieke plaats in te voegen. In dat geval, de Toevoegen methode zal niet helpen. Om dit te bereiken, gebruik de Insert methode van de HeaderCollection. Als de collectie headers met dezelfde naam bevat, wordt deze header vóór andere headers met dezelfde naam ingevoegd. Het volgende code‑fragment toont hoe u een header op een specifieke plaats invoegt.
eml.Headers.Insert("Received", "Value");
Aangepaste headers toevoegen
Een e‑mailheader kan worden opgegeven met de MailMessage klasse. Om een aangepaste header in een e‑mailbericht op te geven, overweeg de volgende code‑voorbeeld:
eml.Headers.Add("secret-header", "mystery");
Het bovenstaande codefragment genereert een e‑mailheader in het volgende formaat:
secret-header: mystery
Ondertekende berichten maken
Aspose.Email‑API biedt de mogelijkheid om ondertekende berichten te maken met certificaten. De AttachSignature methode van de MailMessage klasse kan worden gebruikt om een bericht te ondertekenen voor opslag of zelfs verzending met behulp van de SmtpClient.
Een bericht ondertekenen
Het volgende codefragment laat zien hoe u een bericht ondertekent.
Gebruik van losgekoppelde certificaatoptie
Web‑gebaseerde e‑mailclients kunnen mogelijk de inhoud van een ondertekend bericht niet weergeven. Dit kan worden opgelost door het certificaat los te koppelen voordat het naar web‑gebaseerde e‑mailclients wordt verzonden. De losgekoppelde vlag in de overladen methode van AttachSignature kan hiervoor worden gebruikt. Indien ingesteld op true, wordt het certificaat losgekoppeld van de e‑mail en vice versa. Om de inhoud van een ondertekend bericht te zien in web‑gebaseerde clients, moet u een MailMessage met losgekoppelde handtekening. Het volgende codefragment laat zien hoe u de losgekoppelde certificaatoptie gebruikt.