Crea messaggi MIME utilizzando C#

Quando invii un’email, potresti dover inviare contenuti multimediali come immagini, audio e video. Qui entrano in gioco i messaggi MIME (Multipurpose Internet Mail Extensions). In questo articolo esploreremo come creare EML messaggi programmaticamente in C#. Alla fine dell’articolo, avrai una comprensione di come creare messaggi MIME, aggiungere immagini al contenuto HTML dell’email e salvare l’email in formato EML.

.NET API per creare messaggi MIME

Prima di creare il tuo primo messaggio MIME, il primo passo è installare Aspose.Email per .NET nel tuo progetto. È una potente libreria per sviluppatori C# che fornisce un set completo di strumenti per lavorare con i messaggi email, inclusa la possibilità di creare messaggi MIME programmaticamente. La libreria aiuta gli sviluppatori a manipolare facilmente vari aspetti dei messaggi MIME, come allegati, corpo, intestazione, codifica e altro. Puoi installare la libreria tramite NuGet o scaricare il suo DLL.

PM> Install-Package Aspose.Email

Crea un file EML da zero

Poiché la tua API è stata installata, è tempo di creare il tuo primo eml da zero. Uno dei modi più semplici per farlo è utilizzare la classe MailMessage di Aspose.Email. La classe MailMessage consente di creare un oggetto messaggio email con varie proprietà e metodi che ti permettono di impostare il mittente, i destinatari, l’oggetto, il corpo, gli allegati, le intestazioni e altri dettagli della tua email.

I seguenti passaggi e un frammento di codice ti aiuteranno a creare un EML da zero:

  • Crea un nuovo oggetto MailMessage utilizzando il costruttore predefinito.
  • Imposta le proprietà dell’oggetto MailMessage secondo le tue esigenze.
  • Salva l’oggetto MailMessage in un file EML utilizzando il metodo 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);

Il metodo Save della classe MailMessage prende due parametri: il percorso del file e le opzioni di salvataggio. Le opzioni di salvataggio specificano il formato del file di output.

Aggiungi un’immagine al contenuto HTML

Per eseguire questa funzione, devi incorporare l’immagine nel corpo HTML. Puoi utilizzare il tag “img” per farlo.

Il seguente frammento di codice mostra come aggiungere un’immagine al corpo HTML di un messaggio.

  • Il corpo HTML contiene un tag immagine con un attributo fonte impostato su cid:image1.
  • La classe AlternateView viene utilizzata per ottenere una vista alternativa del corpo del messaggio che contiene l’immagine incorporata.
  • La classe LinkedResource viene utilizzata per rappresentare l’immagine incorporata e il suo ID contenuto è impostato su image1.
  • Infine, la vista alternativa viene aggiunta alla collezione delle viste alternative del messaggio.
// 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);

Crea un file EML da un file HTML

Un modo per farlo è partire da un file HTML e convertirlo in EML. Questo può essere utile se hai un HTML che desideri inviare come messaggio email. Per questo scopo dobbiamo prima avere il contenuto HTML. Chiamiamo questo file content.html. Ecco un esempio di esso:

<!DOCTYPE html>
<html>
<head>
	<title>La mia email</title>
</head>
<body>
	<h1>Ciao,</h1>
	<img src="logo.png" alt="Logo">
	<p>Questa è la mia prima email creata da HTML.</p>
</body>
</html>

Inoltre, devi preparare in anticipo tutte le immagini che contengono HTML e specificare il percorso corretto per esse nel file HTML.

Ora possiamo facilmente creare un MailMessage impostando il corpo HTML dal content.html.

  • Prima, crea un nuovo oggetto HtmlLoadOptions.
  • Imposta una stringa che contiene il percorso delle immagini in PathToResources.
  • Imposta la proprietà ShouldAddPlainTextView su true se l’EML deve contenere una AlternateView con testo semplice.
  • Crea un oggetto MailMessage caricando il file HTML e passando l’oggetto HtmlLoadOptions come parametro.
  • Imposta le proprietà aggiuntive del messaggio.
  • Infine, salva l’oggetto MailMessage in un file EML utilizzando il metodo 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);

Suggerimenti per migliorare la visualizzazione del messaggio HTML in Outlook

Per visualizzare il tuo messaggio HTML in Outlook, devi assicurarti che il suo codice sia compatibile con il motore di rendering di Outlook, che è diverso dalla maggior parte dei browser web. Alcuni dei problemi comuni che possono influenzare la tua email HTML in Outlook sono:

  • Outlook non supporta alcuni dei suoi tag e proprietà CSS, come immagini di sfondo, fluttuazioni, margini, padding, ecc. Potresti dover utilizzare stili in linea, tabelle o commenti condizionali per ottenere il layout e il formato desiderati.
  • Outlook potrebbe aggiungere spazi o righe extra tra gli elementi o rimuovere alcuni elementi del tutto. Potresti dover utilizzare spazi non interrompibili, spazi di larghezza zero o celle di tabella vuote per prevenire ciò.
  • Outlook potrebbe cambiare la codifica o il set di caratteri del tuo file HTML, il che potrebbe causare la visualizzazione errata di alcuni caratteri. Potresti dover specificare la codifica e il set di caratteri in esso utilizzando un tag meta.

Conclusione

In questo post del blog, hai imparato come creare messaggi MIME programmaticamente in C# utilizzando Aspose.Email. Il tutorial passo passo e i campioni di codice hanno mostrato come creare un file eml da zero e da un file HTML, aggiungere un’immagine al contenuto HTML del messaggio email e supportato tutto quanto sopra con utili suggerimenti su come migliorare la visualizzazione del tuo messaggio HTML in Outlook.

  • Puoi esplorare di più su Aspose.Email per .NET e provarlo gratuitamente.
  • Puoi anche controllare ulteriori funzionalità e funzionalità di Aspose.Email nella documentazione.
  • Le tue domande sono benvenute sul nostro forum.

Vedi anche