venerdì 15 gennaio 2021

C# inviare email tramite il componente gratuito MailKit

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/cplusplus/art_c-inviare-email-tramite-il-componente-gratuito-mailkit_1724.aspx


 In questo articolo vedremo come utilizzare il componente gratuito MailKit http://www.mimekit.net/ con le funzionalità base, comprendendo le basi di questo potente componente.

Una libreria con elevate prestazioni ma al tempo stesso anche portabilità e funzionalità che facilitano lo sviluppo software anche su operazioni molto complesse.


Creazione del progetto

Si crea un nuovo progetto di tipo Windows Application, da notare che il codice si può utilizzare anche in altri ambienti, web e mobile, proprio per la portabilità di questa libreria.



Aggiungiamo nella finestra della nostra form alcuni controlli in particolare 4 caselle di testo, 4 controlli di tipo Label, che faranno da titolo alle caselle di testo e due pulsante, il tutto come mostrato in figura 1.



Figura 1 – La forma per la gestione delle email

Stesura del codice

Dopo aver creato il progetto, non ci resta che scrivere il codice per l’invio delle email e la relativa ricezione.

Come provider è stato utilizzato alice, ma lo si può utilizzare con tutti i provider anche con gmail o quelli aziendali.


Prima di iniziare la stesura di codice, dobbiamo aggiungere tramite nuget il componente gratuito per la gestione delle email. Dalla console Nuget, a riga di comando digitiamo il seguente comando.


Install-Package MailKit


Fatto ciò, abbiamo aggiunto al nostro progetto i riferimenti o meglio le librerie per la gestione delle email.

Ora passiamo in visualizzazione codice, ed in alto sopra ogni dichiarazione insieme ad altri namespace, dobbiamo inserire lo spazio dei nomi per la gestione delle classi.


Qui di seguito le dichiarazioni delle suddette operazioni.


using MimeKit;

using MailKit.Net.Smtp;

using MailKit.Net.Pop3;


Ora passiamo in visualizzazione form, nella parte grafica della nostra form e facciamo doppio clck sul pulsante invia email, in questo modo si passa in visualizzazione codice nell’evento click del pulsante.

Il codice utilizzerà le classi di tipo MimeMessage per creare un messaggio, ed SmtpClient, per l’invio.

Qui di seguito il codice per l’invio delle email dell’evento click del pulsante.


private void btnInvio_Click(object sender, EventArgs e)

        {

            var MessaggioInviare = new MimeMessage();

            MessaggioInviare.From.Add(new MailboxAddress("Ema", "emanuelemattei@alice.it"));

            MessaggioInviare.To.Add(new MailboxAddress("Emanuele Mattei", TxtDestinario.Text ));

            MessaggioInviare.Subject = TxtOggetto.Text;

 

            MessaggioInviare.Body = new TextPart("plain")

            {

                Text = TxtTesto.Text

            };

 

            using (var client = new SmtpClient())

            {

                client.Connect("out.alice.it", 587, false);

 

             

                client.Authenticate("NomeUtente", "Password");

 

                client.Send(MessaggioInviare);

                client.Disconnect(true);

            }

        }


Come si è visto dal procedente codice, utilizzando le classi MimeMessage, con il quale si imposta l’email, con i parametri relativi al mittente, destinatario, oggetto, il testo dell’email ed il relativo formato, questo oggetto viene utilizzato nel metodo “Send” della classe Smtpclient, con il quale si invia l’email.

La classe SmtpClient, richiede le informazioni del provider, quale il tipo di host, la porta e se uso di autenticazione, il tutto tramite il metodo “Connect”. Mentre l’autenticazione avviene tramite il metodo “Authenticate” impostando il nome utente e la password del mittente che deve inviare il messaggio.

Al termine di tutte le operazioni, tramite il metodo “Disconnet” si libera la connessione effettuata.

La classe MimeMessage offre numerosi metodi e proprietà che permettono anche operazioni complesse ed avanzate, per questo l’utilizzo di questo componente offre al programmatore funzionalità che con le normali classi richiederebbe molto più codice e tempo.

Ritorniamo in visualizzazione grafica e facciamo doppio click sul pulsante “Ricevi” in questo modo si passa in visualizzazione codice per la ricezione delle email.

Vedremo come rilevare l’oggetto delle email che sono presenti nella posta in arrivo, ossia quelle con il quale un determinato indirizzo ha ricevuto le email.

Per leggere il contenuto delle email presenti nella posta in arrivo, utilizzeremo la classe “Pop3Client” con il quale rileviamo informazioni sulla posta in arrivo.



Qui di seguito il frammento di codice per la ricezione delle email.

private void btnRiceviEmail_Click(object sender, EventArgs e)

        {

            using (var client = new Pop3Client())

            {

                client.Connect("in.alice.it", 110, false);

 

                client.Authenticate("NomeUtente", "Password");

 

                for (int ContaElementi = 0; ContaElementi < client.Count; ContaElementi++)

                {

                    var EmailTrovata = client.GetMessage(ContaElementi);

                    TxtEmailRicevuta.Text += EmailTrovata.Subject + "\r\n";

                   

                }

 

                client.Disconnect(true);

            }

        }



Il codice utilizza la classe “Pop3Client” con il quale tramite il metodo “connect” si effettua una connessione al server mail, indicando il nome host, la porta ed il tipo di sicurezza, successivamente si effettua l’autenticazione utilizzando il metodo “Authenticate” impostando nome utente e password, dell’indirizzo email al quale leggere i vari elementi, per poi effettuare un ciclo con il quale tramite il metodo GetMessage, rileviamo tutti gli elementi della posta in arrivo che sono oggetti di tipo “MimeMessage” dove tramite la proprietà “Subject” rileviamo l’oggetto delle email presenti.

Anche in questo caso tramite il metodo “Disconnect” chiudiamo la connessione con il server mail.



Conclusioni

Questo articolo introduttivo ha fornito al lettore come utilizzare il componente gratuito MailKit, che offre numerose funzionalità, anche molto avanzate e complesse per la gestione della posta elettronica.

L’invio e la ricezione delle email con questo componente diventa molto facile lo sviluppo di applicazioni che richiedono l’uso di email, anche su particolari indirizzi di posta elettronica.

Nel sito inoltre è presente anche la documentazione con il quale approfondire l’utilizzo.

Nessun commento: