Vytvoření MIME zpráv pomocí C#

Při odesílání e-mailu můžete potřebovat odeslat multimediální obsah, jako jsou obrázky, audio a video. To je místo, kde přicházejí na řadu MIME (Multipurpose Internet Mail Extensions) zprávy. V tomto článku prozkoumáme, jak programově vytvářet EML zprávy v C#. Na konci článku budete mít přehled o tom, jak vytvářet MIME zprávy, přidávat obrázky do HTML obsahu e-mailu a ukládat e-mail do formátu EML.

.NET API pro vytvoření MIME zpráv

Než vytvoříte svou první MIME zprávu, prvním krokem je nainstalovat Aspose.Email for .NET do vašeho projektu. Je to mocná knihovna pro vývojáře C#, která poskytuje komplexní sadu nástrojů pro práci s e-mailovými zprávami, včetně schopnosti programově vytvářet MIME zprávy. Knihovna pomáhá vývojářům snadno manipulovat s různými aspekty MIME zpráv, jako jsou přílohy, tělo, hlavička, kódování a další. Knihovnu můžete nainstalovat prostřednictvím NuGet nebo stáhnout její DLL.

PM> Install-Package Aspose.Email

Vytvoření EML souboru od nuly

Protože vaše API bylo nainstalováno, je čas vytvořit váš první eml od nuly. Jeden z nejjednodušších způsobů, jak to udělat, je použít třídu MailMessage z Aspose.Email. Třída MailMessage vám umožňuje vytvořit objekt e-mailové zprávy s různými vlastnostmi a metodami, které vám umožňují nastavit odesílatele, příjemce, předmět, tělo, přílohy, hlavičky a další podrobnosti vašeho e-mailu.

Následující kroky a úryvek kódu vám pomohou vytvořit EML od nuly:

  • Vytvořte nový objekt MailMessage pomocí výchozího konstruktoru.
  • Nastavte vlastnosti objektu MailMessage podle svých potřeb.
  • Uložte objekt MailMessage do EML souboru pomocí metody Save.
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
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>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

Metoda Save třídy MailMessage přijímá dva parametry: cestu k souboru a možnosti uložení. Možnosti uložení určují formát výstupního souboru.

Přidání obrázku do HTML obsahu

Pro provedení této funkce musíte vložit obrázek do HTML těla. K tomu můžete použít tag “img”.

Následující úryvek kódu ukazuje, jak přidat obrázek do HTML těla zprávy.

  • HTML tělo obsahuje tag obrázku s atributem src nastaveným na cid:image1.
  • Třída AlternateView se používá k získání alternativního pohledu těla zprávy, který obsahuje vložený obrázek.
  • Třída LinkedResource se používá k reprezentaci vloženého obrázku a jeho obsahové ID je nastaveno na image1.
  • Nakonec je alternativní pohled přidán do kolekce alternativních pohledů zprávy.
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
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>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

Vytvoření EML souboru z HTML souboru

Jedním ze způsobů, jak to udělat, je začít s HTML souborem a převést ho na EML. To může být užitečné, pokud máte HTML, které chcete odeslat jako e-mailovou zprávu. Pro tento účel potřebujeme nejprve mít HTML obsah. Pojmenujme tento soubor content.html. Zde je jeho příklad:

<!DOCTYPE html>
<html>
<head>
	<title>My Email</title>
</head>
<body>
	<h1>Ahoj,</h1>
	<img src="logo.png" alt="Logo">
	<p>Toto je můj první e-mail vytvořený z HTML.</p>
</body>
</html>

Také musíte předem připravit všechny obrázky, které obsahují HTML, a uvést k nim správnou cestu v HTML souboru.

Nyní můžeme snadno vytvořit MailMessage nastavením HTML těla z content.html.

  • Nejprve vytvořte nový objekt HtmlLoadOptions.
  • Nastavte řetězec, který obsahuje cestu k obrázkům v PathToResources.
  • Nastavte vlastnost ShouldAddPlainTextView na true, pokud by EML měl obsahovat AlternateView s prostým textem.
  • Vytvořte objekt MailMessage načtením HTML souboru a předáním objektu HtmlLoadOptions jako parametru.
  • Nastavte další vlastnosti zprávy.
  • Nakonec uložte objekt MailMessage do EML souboru pomocí metody Save.
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

Tipy pro zlepšení zobrazení HTML zprávy v Outlooku

Aby bylo možné zobrazit vaši HTML zprávu v Outlooku, musíte se ujistit, že její kód je kompatibilní s renderovacím enginem Outlooku, který se liší od většiny webových prohlížečů. Některé běžné problémy, které mohou ovlivnit váš HTML e-mail v Outlooku, jsou:

  • Outlook nepodporuje některé ze svých tagů a CSS vlastností, jako jsou pozadí obrázky, floaty, okraje, paddingy atd. Můžete potřebovat použít inline styly, tabulky nebo podmíněné komentáře k dosažení požadovaného rozložení a formátování.
  • Outlook může přidávat další mezery nebo řádky mezi prvky nebo úplně odstraňovat některé prvky. Můžete potřebovat použít neprolomitelné mezery, nulové šířky mezery nebo prázdné buňky tabulky, abyste tomu zabránili.
  • Outlook může změnit kódování nebo znakové sady vašeho HTML souboru, což může způsobit, že se některé znaky zobrazí nesprávně. Můžete potřebovat specifikovat kódování a znakové sady pomocí meta tagu.

Závěr

V tomto blogovém příspěvku jste se naučili, jak programově vytvářet MIME zprávy v C# pomocí Aspose.Email. Krok za krokem tutoriál a úryvky kódu ukázaly, jak vytvořit EML soubor od nuly a z HTML souboru, přidat obrázek do HTML obsahu e-mailové zprávy a podpořit vše výše uvedené s užitečnými tipy, jak zlepšit zobrazení vaší HTML zprávy v Outlooku.

  • Můžete prozkoumat více o Aspose.Email for .NET a vyzkoušet to zdarma.
  • Můžete také zkontrolovat další funkce a funkčnosti Aspose.Email v dokumentaci.
  • Vaše dotazy jsou vítány na našem fóru.

Viz také