Vytvořit e‑mailové zprávy s přizpůsobenými možnostmi v C#

Vytvořit novou e‑mailovou zprávu

Pro vytvoření nové e‑mailové zprávy můžete použít MailMessage třída. Třída MailMessage také inicializuje vlastnosti vytvořené e‑mailové zprávy, jako je e‑mailová adresa odesílatele, e‑mailové adresy příjemců, předmět e‑mailu a obsah těla e‑mailu ve formátu HTML.

Zvažte následující kód s podrobnými kroky k vytvoření nové e‑mailové zprávy a nastavení jejích vlastností.

  1. Vytvořte novou instanci MailMessage třída.
  2. Nastavte From vlastnost pro e‑mailovou adresu odesílatele.
  3. Nastavte To vlastnost pro čárkou oddělený seznam e‑mailových adres příjemců.
  4. Nastavte Subject vlastnost pro předmět e‑mailu.
  5. Nastavte HtmlBody vlastnost pro HTML obsah těla e‑mailu.
// 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>"
};

Nastavit výchozí kódování textu

Nastavte výchozí kódování textu pro následující vlastnosti:

  • From: Zobrazované jméno
  • To: Zobrazované jméno
  • Subject
  • Body

Použijte MailMessage.PreferredTextEncoding vlastnost, která zajišťuje, že veškerý text v výše uvedených vlastnostech je v e‑mailové zprávě správně kódován. Následující úryvek kódu ukazuje, jak použít francouzské slovo jako zobrazované jméno pro e‑mailové adresy, předmět a tělo zprávy.

Nastavit tělo e‑mailu

Nastavit prostý text těla

Tělo e‑mailu lze zadat pomocí Body vlastnost třídy MailMessage třída.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

Nastavit HTML tělo

Tělo e‑mailu lze také zadat pomocí HtmlBody vlastnost třídy MailMessage třída.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

Nastavit alternativní text

Alternativní pohled v souboru EML je další reprezentace e‑mailového obsahu, která může být použita k poskytování jiného vykreslení e‑mailové zprávy. Například pokud pošlete zprávu v HTML, můžete také poskytnout plain text verzi pro případ, že některý z příjemců používá e‑mailové čtečky, které neumisťují HTML obsah. K tomuto účelu použijte AlternateView třída. Tato třída má dvě vlastnosti, LinkedResources a BaseUri, které se používají k řešení URL v obsahu e‑mailu.

Zvažte následující kód s podrobnými kroky pro nastavení alternativního textu.

  1. Vytvořte instanci MailMessage třída.
  2. Vytvořit AlternateView pro zobrazení e‑mailové zprávy s obsahem určeným v řetězci.
  3. Přidejte alternativní text pomocí Add metoda MailMessage.AlternateViews kolekce.
// 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);

Zadat kódování těla e‑mailu

Aspose.Email používá BodyEncoding vlastnost třídy MailMessage třída pro specifikaci kódování těla e‑mailu. Například:

eml.BodyEncoding = Encoding.UTF8;

Zadat více příjemců

Existují tři způsoby, jak specifikovat příjemce e‑mailové zprávy: pomocí polí To, CC nebo BCC.

  • Pole To je hlavní příjemce vaší zprávy. Do něj můžete zadat jednu nebo více e‑mailových adres oddělených čárkami. Pole To je povinné pro každou e‑mailovou zprávu.

  • Pole CC znamená carbon copy. Používá se k odeslání kopie vaší zprávy dalším osobám, které mají o téma zájem nebo jsou do něj zapojeny. Pole CC je volitelné a může také obsahovat více e‑mailových adres. Příjemci v poli CC vidí, kdo další zprávu obdržel.

  • Pole BCC znamená blind carbon copy. Je podobné poli CC, ale příjemci v poli BCC jsou skrytí před ostatními příjemci. Pole BCC je užitečné, když chcete ochránit soukromí některých příjemců nebo předejít zahlcení jejich schránek odpověďmi. Pole BCC je také volitelné a může obsahovat více e‑mailových adres.

Zvažte následující kód s podrobnými kroky pro zadání více příjemců e‑mailové zprávy.

Kroky kódu:

  1. Vytvořte novou instanci MailMessage třída.
  2. Nastavte From vlastnost pro e‑mailovou adresu odesílatele.
  3. Nastavte To vlastnost pole e‑mailových adres hlavních příjemců.
  4. Nastavte CC vlastnost pole e‑mailových adres příjemců, kteří obdrží kopii e‑mailu.
  5. Nastavte Bcc vlastnost pole e‑mailových adres příjemců, kteří obdrží slepou kopii (BCC) e‑mailu.

Ukázka kódu:

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

Přidat zobrazovaná jména k e‑mailovým adresám

K e‑mailové adrese lze zahrnout zobrazované jméno, které identifikuje odesílatele nebo příjemce e‑mailu. Může zahrnovat celé jméno osoby, přezdívku nebo jiný identifikátor.

Když je e‑mailová zpráva zobrazena v e‑mailovém klientu nebo webmailu, zobrazované jméno je obvykle zobrazeno vedle e‑mailové adresy, což uživateli usnadňuje identifikovat, od koho zpráva pochází nebo komu je adresována. Pro přidání zobrazovaných jmen k e‑mailovým adresám v e‑mailové zprávě zvažte následující kód s podrobnými kroky:

  1. Načtěte e‑mailovou zprávu ze souboru pomocí MailMessage.Load metoda.
  2. Nastavte odesílatele e‑mailu pomocí From vlastnost objektu eml vytvořením nového MailAddress objekt s e‑mailovou adresou a zobrazovaným jménem odesílatele.
  3. Přidejte příjemce do e‑mailu pomocí To vlastnost objektu eml, v případě potřeby přidejte seznam CC (Carbon Copy) pomocí CC vlastnost, seznam BCC (Blind Carbon Copy) pomocí Bcc vlastnost a zavolat Add metodu s novým MailAddress objekt, který obsahuje e‑mailovou adresu a zobrazované jméno příjemce.

Ukázka kódu:

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

Nastavit další vlastnosti

S Aspose.Email můžete použít další vlastnosti třídy MailMessage třída jako:

  • Date vlastnost – nastavuje datum a čas e‑mailu. Ve výchozím nastavení je datum skutečným datem odeslání zprávy a čas je čas odeslání, jak jej zobrazuje Microsoft Outlook. Skutečný čas doručení e‑mailu však přidává samotný SMTP server do hlavičky zprávy. Například níže je běžná hlavička e‑mailu, kde Date nastavuje pole 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 výčet – určuje úrovně priority při odesílání e‑mailové zprávy. Může být nízká, normální nebo vysoká. Priorita ovlivňuje rychlost přenosu a doručení.

  • MailSensitivity výčet – určuje pět úrovní citlivosti.

  • XMailer- určuje software, který vytvořil e‑mailovou zprávu.

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

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

Požádat o potvrzení o přečtení

Pro požádání o potvrzení o přečtení, použijte Aspose.Email DeliveryNotificationOptions vlastnost třídy MailMessage třída. Tato vlastnost obsahuje hodnoty DeliveryNotificationOptions výčet.

Zvažte následující ukázku kódu:

// 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());
}

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

  • Poštovní klient nemusí tuto funkci implementovat.
  • Uživatel může mít tuto funkci vypnutou.
  • Uživatel může zvolit, že ji neodešle.

Přizpůsobit hlavičky e‑mailu

Hlavičky e‑mailů představují internetový standard a RFC definují pole hlaviček, které jsou zahrnuty v internetových e‑mailových zprávách. Hlavičku e‑mailu lze specifikovat pomocí MailMessage třída. Běžné typy hlaviček jsou definovány v HeaderType třída. Jedná se o uzavřenou třídu fungující jako běžná výčet.

Normálně hlavička e‑mailu obsahuje následující pole:

  • To: Adresy příjemců lze zadat do pole To. Příjemci v poli To jsou hlavní adresáti zprávy. Může zde 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 (slepá kopie), která umožňuje odeslat e‑mail příjemci skrytě před ostatními příjemci.
  • 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 u zpráv odpovídajících na nebo komentujících jiné zprávy.
  • Date: Tato hlavička udává datum (a čas). Obvykle se jedná o 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 je používán e‑mailovými klienty. Různí e‑mailoví klienti mají různé hodnoty XMailer. Hodnota XMailer v MS Outlooku je Microsoft Office Outlook, Build 11.0.5510. E‑mailový příjemce nebo čtečka e‑mailu tuto hodnotu ignoruje.

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 těchto kroků kódu:

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

Následující úryvek kódu ukazuje, jak nastavit e‑mailové hlavičky.

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

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

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

Vložit hlavičku na konkrétní místo

The Add metoda třídy HeaderCollection 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 HeaderCollection. 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ásledující úryvek kódu ukazuje, jak vložit hlavičku na konkrétní místo.

eml.Headers.Insert("Received", "Value");

Přidat vlastní hlavičky

E‑mailová hlavička může být specifikována pomocí MailMessage třída. Pro specifikaci vlastní hlavičky v e‑mailové zprávě zvažte následující ukázkový kód:

eml.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

Vytvořit podepsané zprávy

Aspose.Email API poskytuje možnost vytvářet podepsané zprávy pomocí certifikátů. The AttachSignature metoda třídy MailMessage třída může být použita k podepsání zprávy pro uložení nebo dokonce odeslání pomocí SmtpClient.

Podepsat zprávu

Následující úryvek kódu ukazuje, jak podepsat zprávu.

Použití možnosti odděleného certifikátu

Weboví e‑mailoví klienti nemusí být schopni zobrazit obsah těla podepsané zprávy. To lze vyřešit oddělením certifikátu před odesláním do webových e‑mailových klientů. Příznak oddělení v přetížené metodě AttachSignature může být použito k dosažení tohoto. Pokud je nastaveno na true, certifikát je oddělen od e‑mailu a naopak. Pro zobrazení těla podepsané zprávy ve webových klientech musíte vytvořit MailMessage s odděleným podpisem. Následující úryvek kódu ukazuje, jak použít možnost odděleného certifikátu.