
Podczas wysyłania wiadomości e-mail możesz potrzebować przesłać multimedia, takie jak obrazy, audio i wideo. Tutaj wchodzą w grę wiadomości MIME (Multipurpose Internet Mail Extensions). W tym artykule omówimy, jak programowo tworzyć wiadomości EML w C#. Do końca artykułu zrozumiesz jak tworzyć wiadomości MIME, dodawać obrazy do treści HTML wiadomości e-mail i zapisywać e-mail w formacie EML.
- .NET API do tworzenia wiadomości MIME
- Utwórz plik EML od podstaw
- Dodaj obraz do treści HTML
- Utwórz plik EML z pliku HTML
- Wskazówki dotyczące poprawy wyświetlania wiadomości HTML w Outlooku
.NET API do tworzenia wiadomości MIME
Zanim stworzysz swoją pierwszą wiadomość MIME, pierwszym krokiem jest zainstalowanie Aspose.Email for .NET w swoim projekcie. To potężna biblioteka dla programistów C#, która oferuje kompleksowy zestaw narzędzi do pracy z wiadomościami e-mail, w tym możliwość programowego tworzenia wiadomości MIME. Biblioteka umożliwia programistom łatwe manipulowanie różnymi aspektami wiadomości MIME, takimi jak załączniki, treść, nagłówki, kodowanie i inne. Możesz zainstalować bibliotekę za pośrednictwem NuGet lub pobrać jej DLL.
PM> Install-Package Aspose.Email
Utwórz plik EML od podstaw
Ponieważ twoje API zostało zainstalowane, czas na stworzenie swojego pierwszego eml od podstaw. Jednym z najprostszych sposobów jest użycie klasy MailMessage z Aspose.Email. Klasa MailMessage pozwala na tworzenie obiektu wiadomości e-mail z różnymi właściwościami i metodami, które pozwalają ustawić nadawcę, odbiorców, temat, treść, załączniki, nagłówki i inne szczegóły twojego e-maila.
Następujące kroki oraz fragment kodu pomogą ci stworzyć EML od podstaw:
- Utwórz nowy obiekt MailMessage za pomocą domyślnego konstruktora.
- Ustaw właściwości obiektu MailMessage zgodnie z twoimi potrzebami.
- Zapisz obiekt MailMessage do pliku EML za 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 klasy MailMessage przyjmuje dwa parametry: ścieżkę do pliku oraz opcje zapisu. Opcje zapisu określają format pliku wyjściowego.
Dodaj obraz do treści HTML
Aby wykonać tę funkcję, musisz osadzić obraz w treści HTML. Możesz użyć tagu “img”, aby to zrobić.
Następujący fragment kodu pokazuje, jak dodać obraz do treści HTML wiadomości.
- Treść HTML zawiera tag obrazu z atrybutem źródłowym ustawionym na
cid:image1
. - Klasa AlternateView jest używana do uzyskania alternatywnego widoku treści wiadomości, który zawiera osadzony obraz.
- Klasa LinkedResource jest używana do reprezentowania osadzonego obrazu, a jego identyfikator treści jest ustawiony na
image1
. - Na koniec alternatywny widok jest dodawany do kolekcji alternatywnych widoków wiadomości.
// 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); |
Utwórz plik EML z pliku HTML
Jednym ze sposobów jest rozpoczęcie od pliku HTML i konwersja go na EML. To może być przydatne, jeśli masz HTML, który chcesz wysłać jako wiadomość e-mail.
W tym celu najpierw potrzebujemy zawartości HTML. Nazwijmy ten plik content.html
. Oto jego przykład:
<!DOCTYPE html>
<html>
<head>
<title>Moja wiadomość e-mail</title>
</head>
<body>
<h1>Cześć,</h1>
<img src="logo.png" alt="Logo">
<p>To moja pierwsza wiadomość e-mail utworzona z HTML.</p>
</body>
</html>
Musisz także wcześniej przygotować wszystkie obrazy, które zawiera HTML, i określić do nich poprawną ścieżkę w pliku HTML.
Teraz możemy łatwo utworzyć MailMessage, ustawiając treść HTML z content.html
.
- Najpierw stwórz nowy obiekt HtmlLoadOptions.
- Ustaw ciąg, który zawiera ścieżkę do obrazów w PathToResources.
- Ustaw właściwość ShouldAddPlainTextView na true, jeśli EML powinien zawierać AlternateView z tekstem zwykłym.
- Utwórz obiekt MailMessage ładując plik HTML i przekazując obiekt HtmlLoadOptions jako parametr.
- Ustaw dodatkowe właściwości wiadomości.
- Na koniec zapisz obiekt MailMessage do pliku EML za 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); |
Wskazówki dotyczące poprawy wyświetlania wiadomości HTML w Outlooku
Aby wyświetlić swoją wiadomość HTML w Outlooku, musisz upewnić się, że jej kod jest zgodny z silnikiem renderującym Outlooka, który różni się od większości przeglądarek internetowych. Niektóre z powszechnych problemów, które mogą wpłynąć na twój e-mail HTML w Outlooku, to:
- Outlook nie obsługuje niektórych tagów i właściwości CSS, takich jak obrazy tła, pływające elementy, marginesy, padding itp. Możesz potrzebować użyć stylów inline, tabel lub warunkowych komentarzy, aby osiągnąć pożądany układ i formatowanie.
- Outlook może dodać dodatkowe spacje lub linie między elementami lub usunąć niektóre elementy całkowicie. Możesz potrzebować użyć spacji niełamiących, spacji o zerowej szerokości lub pustych komórek tabeli, aby temu zapobiec.
- Outlook może zmienić kodowanie lub zestaw znaków twojego pliku HTML, co może spowodować, że niektóre znaki będą wyświetlane niepoprawnie. Możesz potrzebować określić kodowanie i zestaw znaków w nim za pomocą tagu meta.
Podsumowanie
W tym wpisie na blogu nauczyłeś się, jak programowo tworzyć wiadomości MIME w C# za pomocą Aspose.Email. Krok po kroku samouczek i próbki kodu pokazały, jak stworzyć plik EML od podstaw i z pliku HTML, dodać obraz do treści HTML wiadomości e-mail oraz wspierały wszystkie powyższe z użytecznymi wskazówkami, jak poprawić wygląd twojej wiadomości HTML w Outlooku.
- Możesz odkryć więcej o Aspose.Email for .NET i wypróbować go za darmo.
- Możesz również sprawdzić więcej funkcji i możliwości Aspose.Email w dokumentacji.
- Twoje pytania są mile widziane na naszym forum.