- API C# .NET per gestire i mancati messaggi di posta elettronica e le notifiche di recapito
- Invio di un’e-mail con notifiche di consegna
- Gestione dei rimbalzi di posta elettronica
Quando invii un’e-mail, vuoi sapere se è stata consegnata correttamente al destinatario. Altrettanto importante è la capacità di rilevare e gestire i mancati recapiti delle e-mail, che si verificano quando un’e-mail non può essere consegnata. Possono verificarsi per vari motivi, inclusi indirizzi e-mail non validi, caselle di posta piene o problemi del server. Rilevare questi rimbalzi è fondamentale per mantenere un elenco di posta elettronica pulito e aggiornato e garantire che i tuoi messaggi raggiungano le persone giuste. In questo articolo esploreremo come gestire in modo efficace i messaggi di posta elettronica restituiti al mittente e le notifiche di consegna in ambiente C# .NET.
API C# .NET per gestire i mancati messaggi di posta elettronica e le notifiche di recapito
Per gestire in modo efficiente i rimbalzi di posta elettronica e le notifiche di consegna in C# .NET, utilizzeremo la libreria Aspose.Email, che offre un set completo di strumenti e funzionalità per le attività relative alla posta elettronica. Aspose.Email for .NET. Puoi sfruttare il potenziale dell’API acquisendo la sua DLL tramite download o installandola da NuGet utilizzando il comando seguente:
PM> Install-Package Aspose.Email
Invio di un’e-mail con notifiche di consegna
Lo snippet di codice seguente mostra come creare un messaggio di posta elettronica e impostare le notifiche di consegna utilizzando Aspose.Email. Questo codice consente di creare un messaggio e-mail, specificare gli indirizzi del mittente e del destinatario e configurare le notifiche di consegna per l’esito positivo e negativo. Inoltre, aggiunge intestazioni MIME al messaggio per un monitoraggio più completo. Il codice esegue i seguenti passaggi:
Crea un nuovo messaggio di posta elettronica: il codice inizia creando un nuovo oggetto MailMessage. MailMessage è una classe che rappresenta un messaggio eml che può essere inviato.
Imposta notifiche di consegna: le DeliveryNotificationOptions sono impostate su OnSuccess e OnFailure. Ciò significa che il mittente vorrebbe ricevere un rapporto di consegna se il messaggio viene consegnato con successo o se la consegna fallisce.
Aggiungi intestazioni MIME per notifiche di lettura e disposizione: le intestazioni dell’oggetto messaggio vengono utilizzate per aggiungere intestazioni “Read-Receipt-To” e “Disposition-Notification-To” con l’e-mail del mittente. Queste intestazioni richiedono notifiche di lettura e disposizione all’indirizzo e-mail del mittente rispettivamente al momento della ricezione e della gestione dell’e-mail da parte del destinatario.
Configurare il client SMTP: la classe SmtpClient viene utilizzata per inviare messaggi di posta elettronica. Viene creata un’istanza di questa classe con le credenziali dell’host e dell’utente specificate.
Invia il messaggio: infine, il metodo Send dell’oggetto SmtpClient viene chiamato con l’oggetto MailMessage come argomento per inviare l’e-mail.
// Crea il messaggio
MailMessage msg = new MailMessage();
msg.From = "sender@sender.com";
msg.To = "receiver@receiver.com";
msg.Subject = "the subject of the message";
// Imposta le notifiche di consegna per i messaggi riusciti e non riusciti e aggiungi le intestazioni MIME
msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess | DeliveryNotificationOptions.OnFailure;
msg.Headers.Add("Read-Receipt-To", "sender@sender.com");
msg.Headers.Add("Disposition-Notification-To", "sender@sender.com");
// Invia il messaggio
SmtpClient client = new SmtpClient("host", "username", "password");
client.Send(msg);
Gestione dei rimbalzi di posta elettronica
Oltre a garantire il corretto recapito delle e-mail, puoi sfruttare le funzionalità della libreria per gestire i mancati recapiti. L’esempio di codice riportato di seguito illustra come caricare e verificare lo stato di un messaggio di posta elettronica respinto. Recupera e visualizza informazioni importanti su un’e-mail respinta, come il nome del file, lo stato del mancato recapito, l’azione, il destinatario, il motivo, lo stato e l’indirizzo e-mail del destinatario del messaggio originale. Il codice esegue i seguenti passaggi:
Il codice inizia creando un’istanza della classe MailMessage per caricare il messaggio di posta elettronica dal file specificato utilizzando il metodo Load.
Quindi controlla se l’e-mail è stata respinta chiamando il metodo CheckBounced. Il risultato di questa operazione viene archiviato in un oggetto BounceResult.
Il codice procede quindi a stampare il fileName sulla console fornendo le informazioni dettagliate sul messaggio attraverso le seguenti proprietà:
risultato.IsBounced property represents whether the email has been bounced or not.
risultato.Azione property contains the action associated with the bounce.
risultato.Destinatario property is indicating the recipient of the bounced email.
risultato.Motivo property provides the reason for the email bounce.
risultato.Stato property is representing the status of the bounce.
risultato.OriginalMessage.To[0].Address property contains the email address of the recipient from the original message.
MailMessage mail = MailMessage.Load(fileName);
BounceResult result = mail.CheckBounced();
Console.WriteLine(fileName);
Console.WriteLine("IsBounced : " + result.IsBounced);
Console.WriteLine("Action : " + result.Action);
Console.WriteLine("Recipient : " + result.Recipient);
Console.WriteLine();
Console.WriteLine("Reason : " + result.Reason);
Console.WriteLine("Status : " + result.Status);
Console.WriteLine("OriginalMessage ToAddress 1: " + result.OriginalMessage.To[0].Address);
Console.WriteLine();
Conclusione
In questo articolo, abbiamo attirato la tua attenzione sull’importanza dei messaggi mancati e delle notifiche di consegna. Abbiamo inoltre fornito modalità di gestione supportate da esempi di codice. Ora hai potenti strumenti a tua disposizione per consentire la consegna corretta delle e-mail e per gestire eventuali mancati recapiti che potrebbero verificarsi. Incorporando queste pratiche nei tuoi progetti, puoi ottenere una comunicazione e-mail efficace in un ambiente C# .NET e garantire che i tuoi messaggi raggiungano i destinatari previsti.
Per informazioni più dettagliate o altre funzionalità di Aspose.Email for .NET è possibile rivolgersi alla nostra documentazione. In caso di domande o di difficoltà, visitare il nostro forum.