In questo blog imparerai come creare messaggi di posta elettronica di Outlook (inclusi MSG, EML, EMLX o MHTML) e inviare e-mail in modo sincrono o asincrono utilizzando C# in .NET o .NET Core.

C# invia e-mail di Outlook

L’e-mail è diventata una fonte primaria per lo scambio di messaggi e la condivisione di contenuti come documenti, immagini o altri tipi di file. La frequenza di utilizzo delle e-mail è maggiore nei sistemi online per la condivisione di notifiche o documenti importanti con più entità. In questi casi, la preparazione di un modello e l’invio manuale di e-mail a più parti interessate potrebbe essere un’attività laboriosa e dispendiosa in termini di tempo.

Da qui nasce la necessità di un servizio di automazione della posta elettronica con il quale è possibile creare e inviare e-mail senza problemi. Quindi, in questo articolo, ti insegnerò come creare messaggi di posta elettronica nei formati Outlook più diffusi e automatizzare il processo di invio di posta elettronica a livello di codice. Dopo aver letto questo articolo, sarai in grado di:

  • creare e salvare un messaggio di posta elettronica in C#,
  • creare un’e-mail con corpo HTML in C#,
  • creare un’e-mail con una codifica particolare in C#,
  • inviare e-mail in modo sincrono utilizzando SMTP in C#,
  • inviare e-mail in modo asincrono utilizzando SMTP in C#,
  • e invia email in blocco in C#.

API C# per creare e inviare e-mail di Outlook

Per automatizzare il processo di creazione e invio di messaggi di posta elettronica, utilizzeremo Aspose.Email for .NET che è una potente API di elaborazione e manipolazione della posta elettronica. Supporta i formati di posta elettronica più diffusi, inclusi i messaggi di MS Outlook come MSG, EML/EMLX, ecc. Puoi scaricare direttamente la DLL dell’API o installarla tramite NuGet Package Manager o Package Manager Console in Visual Studio .

PM> Install-Package Aspose.Email

Dopo aver creato un’applicazione C# (Console, ASP.NET, ecc.) e aver installato Aspose.Email per .NET, puoi iniziare a creare e inviare i messaggi di posta elettronica in C#.

Crea un’e-mail di Outlook in C#

Per creare o manipolare i messaggi di posta elettronica di Outlook, Aspose.Email fornisce la classe MailMessage. Questa classe ti consente di impostare tutte le proprietà di un messaggio e-mail (Oggetto, A, Da e Corpo), aggiungere allegati e salvare il messaggio in diversi formati e-mail come EML, MSG, MHTML, ecc. Di seguito sono riportati i passaggi per creare un messaggio di posta elettronica:

  • Crea un’istanza della classe MailMessage.
  • Imposta le proprietà del messaggio.
  • Salva il messaggio di posta elettronica utilizzando il metodo MailMessage.Save().

L’esempio di codice seguente mostra come creare e salvare un messaggio di posta elettronica in C#.

// Crea una nuova istanza della classe MailMessage
MailMessage message = new MailMessage();

// Imposta l'oggetto del messaggio, il corpo e le informazioni sul mittente
message.Subject = "New message created by Aspose.Email for .NET";
message.Body = "This is the body of the email.";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// Aggiungi a destinatari e destinatari CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Aggiungi allegati
message.Attachments.Add(new Attachment("word.docx"));

// Salva il messaggio nei formati EML, EMLX, MSG e MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
message.Save("EmailMessage.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat));
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
message.Save("EmailMessage.mhtml", SaveOptions.DefaultMhtml);

Crea un’e-mail di Outlook con corpo HTML in C#

I tag HTML servono a rendere il corpo dell’email più strutturato, presentabile e arricchito con diversi elementi come tabelle, immagini, elenchi e così via. Nel caso in cui desideri creare un’e-mail con un corpo HTML, puoi utilizzare la proprietà MailMessage.HtmlBody. L’esempio di codice seguente mostra come creare un messaggio di posta elettronica di Outlook con corpo HTML in C#.

// Crea una nuova istanza della classe MailMessage
MailMessage message = new MailMessage();

// Imposta l'oggetto del messaggio, il corpo HTML e le informazioni sul mittente
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// Aggiungi a destinatari e destinatari CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Salva il messaggio in formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);

Crea un’e-mail di Outlook con una codifica particolare in C#

Puoi anche specificare lo standard di codifica desiderato per indicare al browser o all’applicazione e-mail come interpretare i caratteri nel corpo dell’e-mail. A questo scopo viene utilizzata la proprietà MailMessage.BodyEncoding. L’esempio di codice seguente mostra come impostare la codifica del corpo durante la creazione di un messaggio di posta elettronica di Outlook usando C#.

// Crea una nuova istanza della classe MailMessage
MailMessage message = new MailMessage();

// Imposta l'oggetto del messaggio, il corpo HTML, le informazioni sul mittente e sul destinatario
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));

// Specifica la codifica 
message.BodyEncoding = Encoding.ASCII;

// Salva il messaggio in formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);

Invia e-mail di Outlook in modo sincrono o asincrono in C#

Ora, una volta creato il messaggio di posta elettronica, puoi inviarlo ai suoi destinatari in modo sincrono o asincrono. La classe SmtpClient consente di inviare i messaggi di posta elettronica di Outlook utilizzando SMTP (Simple Mail Transfer Protocol). Di seguito sono riportati i passaggi per inviare un messaggio di posta elettronica in C# usando Aspose.Email per .NET.

  • Crea o carica un messaggio di posta elettronica utilizzando la classe MailMessage.
  • Crea un’istanza della classe SmtpClient e imposta host, nome utente, password e numero di porta.
  • Invia e-mail in modo sincrono o asincrono utilizzando rispettivamente il metodo SmtpClient.Send o SmtpClient.SendAsync.

Invia un’e-mail di Outlook in modo sincrono in C#

// Crea istanza MailMessage. Puoi creare un nuovo messaggio o caricare un file di messaggio già creato (eml, msg, ecc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Creare un'istanza della classe SmtpClient
SmtpClient client = new SmtpClient();

// Specificare l'host di posta, il nome utente, la password, il numero di porta e l'opzione di sicurezza
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
	// Invia questa e-mail
	client.Send(msg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Invia un’e-mail di Outlook in modo asincrono in C#

// Crea istanza MailMessage. Puoi creare un nuovo messaggio o caricare un file di messaggio già creato (eml, msg, ecc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Creare un'istanza della classe SmtpClient
SmtpClient client = new SmtpClient();

// Specificare l'host di posta, il nome utente, la password, il numero di porta e l'opzione di sicurezza
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;

// Specificare l'host di posta, il nome utente, la password, il numero di porta e l'opzione di sicurezza
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit; 

// Manda messaggi
client.SendAsync(msg);

Console.WriteLine("Sending message..."); 

msg.Dispose(); 

Invia e-mail in blocco in C#

Puoi anche creare e inviare e-mail in blocco. La classe MailMessageCollection viene utilizzata per contenere la raccolta di messaggi di posta elettronica che si desidera inviare. L’esempio di codice seguente mostra come inviare messaggi di posta elettronica in blocco in C#.

// Crea SmtpClient e specifica server, porta, nome utente e password
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// Crea istanze della classe MailMessage e specifica A, Da, Oggetto e Messaggio
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

// Crea un'istanza di MailMessageCollection e aggiungi messaggi di posta elettronica ad essa
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
 
try
{  
	// Manda messaggi
	client.Send(manyMsg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Dimostrazioni dal vivo

Conclusione

In questo articolo, hai imparato come creare e-mail di Outlook in C#. Inoltre, hai visto come inviare e-mail in modo sincrono o asincrono dall’interno delle applicazioni .NET. Puoi esplorare la documentazione di Aspose.Email per .NET per saperne di più sull’API.

Guarda anche