E-mails aanmaken en beheren
Een nieuw e‑mailbericht maken
De MailMessage klasse vertegenwoordigt een e-mailbericht en stelt ontwikkelaars in staat een nieuw e‑mailbericht te maken. Basis‑e‑maileigenschappen zoals From, To, Subject en body kunnen eenvoudig worden toegevoegd aan het nieuw gemaakte mailbericht. Eveneens kunnen we het mailbericht opslaan in verschillende formaten zoals EML, MSG en MHTML.
- Maak een instantie van de MailMessage klasse.
- Stel mailbericht‑eigenschappen in.
- Sla het mailbericht op in verschillende formaten.
De volgende codefragment toont hoe je een nieuwe e-mail maakt met verschillende eigenschappen.
Meerdere ontvangers specificeren
De MailMessage object vertegenwoordigt een e‑mailbericht. Instanties van de MailMessage klasse wordt gebruikt om e‑mailberichten op te bouwen die naar een SMTP‑server worden verzonden met behulp van de SmtpClient klasse. Dit artikel toont hoe je meer dan één e‑mailadres kunt opgeven. E‑mailadressen kunnen worden gespecificeerd met de MailMessage klasse. Het zijn:
- To - Ontvangeradressen kunnen worden opgegeven in het ‘To’-veld. De ontvangers van het ‘To’-veld vormen het primaire publiek van het bericht. Er kan meer dan één ontvangeradres zijn.
- Cc - CC staat voor "carbon copy" of "courtesy copy" en stelt u in staat e-mailontvangers toe te voegen die de e-mail moeten zien maar niet per se moeten reageren. Managers, bijvoorbeeld, of teamleden die op de hoogte moeten zijn van een gesprek. Met Aspose.Email kunnen CC-adressen in uw code worden opgegeven. Op deze manier kunnen geautomatiseerde e-mails, of alle e-mails naar een specifiek adres, worden gekopieerd naar relevante personen.
- Bcc - Bcc, blind carbon copy, stelt u in staat een e-mail te sturen naar een ontvanger die verborgen blijft voor andere ontvangers. Waar een CC verschijnt in de e-mailinformatie die de hoofdontvangers zien, verschijnt een Bcc niet. Het is bedoeld voor een verborgen melding.
Om meerdere e-mailadressen in een e-mailbericht op te geven, volg deze stappen:
- Maak een instantie van de MailMessage klasse.
- Specificeer de From‑ en meerdere To-, Cc- en Bcc‑adressen met behulp van de
MailMessageinstantie. - Maak een instantie van de SmtpClient klasse en verzend de e-mail met de Send-methode.
Het onderstaande codevoorbeeld laat zien hoe meerdere Aan-, CC- en BCC-adressen kunnen worden opgegeven.
Afzender- en ontvangerweergavenamen instellen
De programmeervoorbeelden hieronder laten zien hoe e-mailadressen te wijzigen naar vriendelijke namen in een e-mailbericht. Een vriendelijke naam is een naam die menselijker is dan het e-mailadres, bijvoorbeeld John Smith in plaats van js346@domain.com. Bij het verzenden van een e-mail kunnen we een vriendelijke naam koppelen aan een e-mailadres in de MailMessage klasseconstructor.
Om e-mailadressen te wijzigen in vriendelijke namen in een e-mailbericht, volg deze stappen:
- Maak een instantie van de MailMessage klasse en specificeer e‑mailadressen in de To- en From-velden met vriendelijke namen.
- Specificeer de Cc- en Bcc‑e‑mailadressen met vriendelijke namen door de MailMessage klassendeconstructor in de
MailMessageinstantie. - Maak een instantie van de SmtpClient klasse en verzend de e‑mail met de Verzenden methode.
Het volgende codefragment toont hoe u namen voor e-mailadressen weergeeft.
Het onderwerp van een e‑mail instellen
De MailMessage klasse stelt je in staat een beknopte samenvatting van de berichtinhoud te specificeren met de onderwerp eigenschap. Het volgende codevoorbeeld toont hoe je een e‑mail maakt en het onderwerp instelt:
from aspose.email import MailMessage
# Create a new email message
message = MailMessage()
# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"
# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."
# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")
E‑mailbody instellen
Naast het onderwerp van het bericht kan de e‑mailbody worden gespecificeerd met dezelfde MailMessage klasse. Een e‑mail kan meerdere bodies hebben. Er zijn twee soorten mail‑bodies in de klasse:
- HTML‑body
- Tekst‑body
Naast HtmlBody en TextBody, Aspose.Email heeft nog twee alleen-lezen eigenschappen die gerelateerd zijn aan de mailbody:
IsBodyText: geeft aan of de body tekst is.IsBodyHtml: geeft de gebruiker aan of de tekst HTML of platte tekst is.
Dit artikel laat zien hoe je platte tekst of HTML‑bodytekst definieert, alternatieve tekst instelt en de e‑mailbody codeert.
HTML-tekst instellen
Html‑body wordt gebruikt om de HTML‑inhoud van een berichtbody te specificeren. Html‑body moet tussen -tags staan. Het volgende codefragment toont hoe je een HTML‑body instelt.
Alternatieve tekst instellen
Gebruik de AlternateView klasse om kopieën van een e‑mailbericht in verschillende formaten op te geven. Bijvoorbeeld, als je een bericht in HTML verstuurt, kun je ook een platte‑tekstversie aanbieden voor het geval dat sommige ontvangers e‑maillezers gebruiken die geen HTML kunnen weergeven. Deze klasse heeft twee eigenschappen, linked_resources en base_uri, die worden gebruikt om URL’s in de e-mailinhoud te resolveren.
- LinkedResources is een verzameling LinkedResources‑objecten. Bij weergave worden URL’s binnen de e‑mailinhoud eerst vergeleken met de URL’s in de Content Link van elk LinkedResources‑object in de LinkedResources‑collectie en vervolgens opgelost.
- BaseUri wordt door de e-maillezer gebruikt om relatieve URL’s in de tekst te resolveren, en ook om relatieve Content Link-URL’s te resolveren in de LinkedResources-collectie.
Het volgende codefragment laat zien hoe u alternatieve tekst instelt.
MailMessage-functies
De MailMessage class stelt de inhoud van een e‑mailbericht voor. Instanties van de MailMessage class worden gebruikt om een e‑mailbericht samen te stellen dat wordt verzonden naar een SMTP‑server voor aflevering met behulp van de SmtpClient class. Dit artikel laat zien hoe u MailMessage class hulpfuncties voor het regelen van de volgende e‑mailfuncties:
- Datum en tijd - Via de MailMessage class Date‑eigenschap waarmee we de datum en tijd van een e‑mail krijgen of instellen.
- Berichtprioriteit - De MailPriority klasse specificeert prioriteitsniveaus voor het verzenden van een e-mailbericht. Het kan laag, normaal of hoog zijn. Prioriteit beïnvloedt de transmissiesnelheid en bezorging.
- Berichtgevoeligheid - De MailSensitivity klasse specificeert vijf gevoeligheidsniveaus.
- Bezorgingsmelding - Bezorgingsmeldingen laten afzenders weten dat de e-mail die ze hebben verzonden is afgeleverd in de inbox van de ontvanger.
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 daadwerkelijke e‑mailleveringstijd wordt echter door de SMTP‑server zelf toegevoegd in de e‑mailheader. Bijvoorbeeld, hieronder staat een veelvoorkomende e‑mailheader, waarbij Date het datumveld instelt.
import aspose.email as ae
from aspose.email import MailMessage
# Create a new MailMessage instance
message = MailMessage()
# Add SMTP headers to the message
message.headers.add("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")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("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")
# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
Het onderstaande codefragment illustreert hoe elk van de hierboven besproken functies kan worden gebruikt.
import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime
# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
Aanvragen van een leesbevestiging
De onderstaande programmeervoorbeelden laten zien hoe u een leesbevestiging kunt aanvragen. De MailMessage klasse DeliveryNotificationOptions Enumeratie‑eigenschap beschrijft de opties voor afleveringsnotificaties voor een e‑mail. Om een leesbevestiging aan te vragen na het verzenden van een e‑mail, volg deze stappen:
- Maak een instantie van de MailMessage klasse.
- Specificeer de afzender, ontvanger en HTML‑body voor de e‑mail in de MailMessage instantie.
- Specificeer de DeliveryNotificationOptions in andere MailMessage instanties.
- Maak een instantie van de SmtpClient klasse en verzend de e‑mail met de Send‑methode.
Leesbevestigingsverzoeken 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 er geen te verzenden.
Het volgende codefragment laat zien hoe u een leesbevestiging kunt aanvragen.
import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions
# Create an instance of MailMessage class
message = MailMessage()
# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS
message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")
# Create an instance of SmtpClient class
client = SmtpClient()
# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25
try:
# Client.send will send this message
client.send(message)
# Display 'Message sent' only if the message is sent successfully
print("Message sent")
except Exception as ex:
import traceback
traceback.print_exc()
E‑mailheaders instellen
E‑mailheaders vertegenwoordigen een internetstandaard en RFC definieert headervelden die in internet‑e‑mailberichten worden opgenomen. Een e‑mailheader kan worden opgegeven met behulp van de MailMessage‑klasse. Veelvoorkomende header‑typen zijn gedefinieerd in de HeaderType‑klasse. Het is een sealed‑klasse die functioneert als een normale enumeratie.
Normaal bevat een e-mailheader deze velden:
- To: Ontvangeradressen kunnen worden opgegeven in het To‑veld. Deze ontvangers vormen het primaire publiek van het bericht. Er kan meer dan één ontvangeradres 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, verwijst naar de praktijk om een bericht naar meerdere ontvangers te sturen waarbij de lijst van ontvangers die ze ontvangen niet compleet is. Het is bedoeld voor verborgen notificatie.
- ReplyTo: Dit header‑veld geeft aan waar de afzender de antwoorden naartoe wil laten gaan.
- Subject: Titel, kop, onderwerp. Wordt vaak gebruikt als thread‑indicator voor berichten die antwoorden op of commentaar geven op andere berichten.
- Date: Deze header specificeert een datum (en tijd). Normaal 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 stappen:
- Maak een instantie van de MailMessage klasse.
- Specificeer To, From, CC, Bcc, ReplyTo, Subject, Date & XMailer met een instantie van de MailMessage.
- Maak een instantie van de MimeHeader klasse en geef de geheime header op.
- Voeg de geheime header toe aan de MailMessage instantie.
De volgende codefragment toont hoe je e‑mailheaders instelt.
import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime
# Create an instance of MailMessage class
message = MailMessage()
# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")
Het bovenstaande codefragment genereert een e‑mailheader in het volgende formaat. Dit kan worden bekeken door het resulterende bestand "MsgHeaders.msg" te openen in Microsoft Outlook en vervolgens de Eigenschappen te bekijken.
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
secret-header: mystery
Header invoegen op specifieke locatie
De Toevoegen methode van HeadersCollection klasse voegt de header toe aan het einde van de collectie. Soms kan het echter nodig zijn om een header op een specifieke locatie in te voegen. In dat geval, de Toevoegen methode zal niet helpen. Om dit te bereiken, gebruik de Insert methode van de HeadersCollection. Als de collectie headers met dezelfde naam bevat, wordt deze header ingevoegd vóór andere headers met dezelfde naam.
De volgende codefragment toont hoe je een header op een specifieke locatie invoegt.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
Aangepaste headers aan e‑mail toevoegen
Het onderstaande programmeervoorbeeld toont hoe je een aangepaste header opgeeft in een e‑mailbericht met behulp van de MailMessage klasse.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
Het bovenstaande codefragment genereert een e‑mailheader in het volgende formaat:
secret-header: mystery