Vytváření a správa e‑mailů

Vytvoření nové e‑mailové zprávy

The MailMessage třída představuje e‑mailovou zprávu a umožňuje vývojářům vytvářet nové e‑mailové zprávy. Základní vlastnosti e‑mailu jako From, To, Subject a tělo mohou být snadno připojeny k nově vytvořené zprávě. Podobně můžeme zprávu uložit do různých formátů jako EML, MSG a MHTML.

  • Vytvořte instanci MailMessage třída.
  • Nastavte vlastnosti e‑mailové zprávy.
  • Uložte e‑mailovou zprávu v různých formátech.

Níže uvedený úryvek kódu ukazuje, jak vytvořit nový e‑mail s různými vlastnostmi.

Specifikace více příjemců

The MailMessage objekt představuje e‑mailovou zprávu. Instance MailMessage třída se používá k sestavení e‑mailových zpráv, které jsou přenášeny na SMTP server pomocí SmtpClient třída. Tento článek ukazuje, jak specifikovat více než jednu e‑mailovou adresu. E‑mailové adresy lze zadat pomocí MailMessage třída. Jsou to:

  • To – adresy příjemců lze zadat v poli ‘To’. Příjemci v poli ‘To’ jsou hlavní publikum zprávy. Může být více než jedna adresa příjemce.
  • Cc – CC (carbon copy, neboli "zdvořilá kopie") vám umožňuje přidat e‑mailové příjemce, kteří potřebují e‑mail vidět, ale nemusí na něj nutně reagovat. Například manažeři nebo členové vašeho týmu, kteří potřebují být informováni o konverzaci. S Aspose.Email lze CC adresy zadat v kódu. Tím lze automatické e‑maily nebo všechny e‑maily na konkrétní adresu kopírovat relevantním osobám.
  • Bcc – Bcc (blind carbon copy) vám umožňuje poslat e‑mail příjemci, který je skrytý před ostatními příjemci. Zatímco CC se zobrazí v informacích o e‑mailu, které vidí hlavní příjemci, Bcc se nezobrazí. Slouží k skryté notifikaci. 

Pro specifikaci více e‑mailových adres v e‑mailové zprávě postupujte takto:

  1. Vytvořte instanci MailMessage třída.
  2. Zadejte adresu From a více adres To, Cc a Bcc pomocí MailMessage instance.
  3. Vytvořte instanci SmtpClient třída a odešlete e‑mail pomocí metody Send.

Níže uvedený ukázkový kód ukazuje, jak lze specifikovat více adres pro To, CC a BCC.

Nastavení zobrazovaných jmen odesílatele a příjemce

Níže uváděné programové ukázky demonstrují, jak v e‑mailové zprávě změnit e‑mailové adresy na přátelská jména. Přátelské jméno je název, který je pro člověka přívětivější než samotná e‑mailová adresa, například John Smith místo js346@domain.com. Při odesílání e‑mailu můžeme přátelské jméno přiřadit k e‑mailové adrese v MailMessage konstruktor třídy.

Pro změnu e‑mailových adres na přátelská jména v e‑mailové zprávě postupujte takto:

  • Vytvořte instanci MailMessage třída a zadejte e‑mailové adresy v polích To a From spolu s přátelskými názvy.
  • Zadejte e‑mailové adresy Cc a Bcc spolu s přátelskými názvy pomocí volání MailMessage konstruktor třídy v MailMessage instance.
  • Vytvořte instanci SmtpClient třídy a odešlete e‑mail pomocí Odeslat metoda.

Následující úryvek kódu ukazuje, jak zobrazit jména pro e‑mailové adresy.

Nastavení předmětu e‑mailu

The MailMessage třída vám umožní specifikovat stručné shrnutí obsahu zprávy pomocí předmět vlastnost. Níže uvedený ukázkový kód demonstruje, jak vytvořit e‑mail a nastavit jeho předmět:

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}")

Nastavení těla e‑mailu

Stejně jako předmět zprávy lze tělo e‑mailu specifikovat pomocí stejného MailMessage třída. E‑mail může mít více těl. Ve třídě existují dva typy těles e‑mailu:

  • HTML tělo
  • Textové tělo

Kromě HtmlBody a TextBody, Aspose.Email má další dvě pouze ke čtení určené vlastnosti související s tělem e‑mailu:

  • IsBodyText: informuje uživatele, zda je tělo textové.
  • IsBodyHtml: informuje uživatele, zda je tělo HTML nebo prostý text.

Tento článek ukazuje, jak definovat prostý text nebo HTML text těla, nastavit alternativní text a zakódovat tělo e‑mailu.

Nastavení HTML těla

Html tělo se používá k určení HTML obsahu těla zprávy. Html tělo musí být uzavřeno mezi značkami . Níže uvedený úryvek kódu ukazuje, jak nastavit HTML tělo.

Nastavení alternativního textu

Použijte AlternateView třída pro specifikaci kopií e‑mailové zprávy v různých formátech. Například pokud pošlete zprávu v HTML, můžete také poskytnout verzi prostého textu pro příjemce, kteří nemohou zobrazit HTML obsah. Tato třída má dvě vlastnosti, linked_resources a base_uri, které se používají k řešení URL v obsahu e‑mailu.

  • LinkedResources je kolekce objektů LinkedResources. Při vykreslování jsou URL adresy v obsahu e‑mailu nejprve porovnány s URL v Content Link každého objektu LinkedResources v kolekci LinkedResources a vyřešeny.
  • BaseUri používá čtečka e‑mailů k řešení relativních URL v těle zprávy a také k řešení relativních URL v Content Link ve sbírce LinkedResources.

Následující úrynek kódu ukazuje, jak nastavit alternativní text.

Vlastnosti MailMessage

The MailMessage třída představuje obsah e‑mailové zprávy. Instance třídy MailMessage třída se používá k vytvoření e‑mailové zprávy, která je odeslána na SMTP server k doručení pomocí SmtpClient třída. Tento článek ukazuje, jak použít MailMessage třída obsahuje užitečné funkce pro řízení následujících vlastností e‑mailu:

  • Datum a čas – prostřednictvím MailMessage Vlastnost třídy Date získává nebo nastavuje datum a čas e‑mailu.
  • Priorita zprávy –  MailPriority třída určuje úrovně priority pro odeslání e‑mailové zprávy. Může být nízká, normální nebo vysoká. Priorita ovlivňuje rychlost přenosu a doručení.
  • Citlivost zprávy –  MailSensitivity třída určuje pět úrovní citlivosti.
  • Oznámení o doručení – Oznámení o doručení informují odesílatele, že odeslaný e‑mail byl doručen do schránek příjemce.

Ve výchozím nastavení je datum skutečným datem, kdy byla zpráva odeslána, a čas je čas, kdy byla odeslána, jak zobrazuje Microsoft Outlook. Skutečný čas doručení e‑mailu však přidává samotný SMTP server v hlavičce zprávy. Například níže je běžná hlavička e‑mailu, kde pole Date nastavuje datum.

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())

Níže uvedený úryvek kódu ilustruje, jak lze každou z výše popsaných funkcí použít.

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())

Požadování doručenky

Níže uvedené programové ukázky ukazují, jak můžete požádat o potvrzení přečtení. MailMessage třída DeliveryNotificationOptions Vlastnost výčtu popisuje možnosti oznámení o doručení e‑mailu. Pro požádání o potvrzení přečtení po odeslání e‑mailu postupujte následovně:

  1. Vytvořte instanci MailMessage třída.
  2. Zadejte odesílatele, příjemce a HTML tělo e‑mailu v MailMessage instance.
  3. Určete DeliveryNotificationOptions v jiných MailMessage instance.
  4. Vytvořte instanci SmtpClient třída a odešlete e‑mail pomocí metody Send.

Požadavky na potvrzení přečtení nemusí být vždy vyhověny, protože:

  • Poštovní klient nemusí tuto funkci implementovat.
  • Koncový uživatel může mít tuto funkci vypnutou.
  • Koncový uživatel se může rozhodnout jej neodeslat.

Následující úryvek kódu ukazuje, jak požádat o potvrzení přečtení.

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()

Nastavení e‑mailových hlaviček

Hlavičky e‑mailu představují internetový standard a RFC definuje pole hlaviček, která jsou součástí internetových e‑mailových zpráv. Hlavičku e‑mailu lze specifikovat pomocí třídy MailMessage. Běžné typy hlaviček jsou definovány ve třídě HeaderType. Jedná se o finalní třídu fungující jako běžná enumerace.

Obvykle hlavička e‑mailu obsahuje následující pole:

  • To: Adresy příjemců lze zadat v poli To. Tito příjemci jsou hlavní publikum zprávy. Může být více než jedna adresa příjemce.
  • From: Toto pole obsahuje e‑mailovou adresu odesílatele zprávy.
  • Cc: Umožňuje uživatelům poslat zprávu jako „Carbon Copy“ nebo „Courtesy Copy“. Přijímající není očekáváno, že odpoví nebo bude jednat. Obvykle jsou tímto způsobem informováni nadřízení.
  • Bcc: Zkratka pro Blind Carbon Copy, odkazuje na praxi zasílání zprávy více příjemcům tak, aby příjemci neviděli kompletní seznam adresátů. Slouží k skryté notifikaci.
  • ReplyTo: Toto pole hlavičky určuje, kam má odesílatel směřovat odpovědi.
  • Subject: Název, nadpis, předmět. Často se používá jako indikátor vlákna pro odpovědi nebo komentáře na jiné zprávy.
  • Date: Tato hlavička určuje datum (a čas). Obvykle je to datum, kdy byla zpráva vytvořena a odeslána.
  • XMailer: Informace o klientském softwaru odesílatele. Příklad: X-Mailer: Aspose.Email. XMailer používají e‑mailoví klienti. Různí klienti mají různé hodnoty XMailer. Hodnota XMailer v MS Outlook je Microsoft Office Outlook, Build 11.0.5510. Je ignorována přijímačem e‑mailu nebo čtečkou.

Obvykle vypadá hlavička e‑mailu takto:


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

Pro úpravu hlavičky e‑mailu postupujte podle následujících kroků:

  • Vytvořte instanci MailMessage třída.
  • Zadejte To, From, CC, Bcc, ReplyTo, Subject, Date a XMailer pomocí instance MailMessage.
  • Vytvořte instanci MimeHeader třídu a specifikujte tajnou hlavičku.
  • Přidejte tajnou hlavičku do MailMessage instance.

Níže uvedený úryvek kódu ukazuje, jak nastavit hlavičky e‑mailu.

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")

Výše uvedený úryvek kódu vytvoří hlavičku e‑mailu v následujícím formátu. To lze pozorovat otevřením výsledného souboru "MsgHeaders.msg" v Microsoft Outlook a následným zobrazením Vlastností.


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

Vložení hlavičky na konkrétní místo

The Add metoda HeadersCollection třída vloží hlavičku na konec kolekce. Někdy však může být nutné vložit hlavičku na konkrétní místo. V takovém případě Add metoda nebude užitečná. Pro dosažení tohoto použijte Insert metoda třídy HeadersCollection. Pokud kolekce obsahuje hlavičky se stejným názvem, tato hlavička bude vložena před ostatní hlavičky se stejným názvem.

Níže uvedený úryvek kódu ukazuje, jak vložit hlavičku na konkrétní místo.

# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")

Přidávání vlastních hlaviček do e‑mailu

Níže uvedený programový příklad ukazuje, jak specifikovat vlastní hlavičku v e‑mailové zprávě pomocí MailMessage třída.

# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")

Výše uvedený úryvek kódu vytvoří hlavičku e‑mailu v následujícím formátu:

secret-header: mystery