In questo articolo vedremo come inviare una email tramite la tecnologia .Net 5 con il linguaggio di programmazione C# utilizzando Gmail.
Tramite l’ambiente di sviluppo Visual Studio 2019 Community vedremo come poter inviare una email da un’applicazione di tipo Windows Application ad un indirizzo email.
La prima operazione da fare però è quella di abilitare in Gmail o meglio nel proprio account, la possibilità di “accesso alle app meno sicure” perché di default è disabilitato. Attenzione, abilitando questa opzione, si va incontro alla possibilità di dare accesso ad altre applicazioni di accedere ai servizi e dati del proprio account google. Per questo motivo è disabilitata per rendere il sistema ancora più sicuro.
Come si vede in figura 1, il valore di default è false tale opzione, nel nostro caso facciamo clici sul pulsante di destra.
Figura 1 – l’opzione disabilita per l’accesso ad app meno sicure.
Questa opzione si trova nella categoria “sicurezza” situata nel menu di sinistra.
Se non viene abilitato, quando si spedisce l’email, viene generata un eccezione con il seguente messaggio “Il server SMTP richiede una connessione protetta oppure il client non è stato autenticato. Risposta del server: 5.7.0 Authentication Required. Learn more at.” .
Abilitiamo tale opzione, terminato ciò non ci resta che creare il nostro progetto.
Creazione del progetto
Si crea un nuova applicazione di tipo “App Windows Forms” , selezionando come versione 5 del Framework.
Nella form inseriamo tre controlli di tipo “label” che indicheranno il titolo delle caselle di testo, e tre controlli di tipo “textbox” di cui l’ultima multiline.
Infine sotto ad ogni controllo inseriamo un pulsante.
Il tutto sarà come riportato in figura 2.
Figura 2 – La disposizione dei controlli
Stesura del codice
Terminata la configurazione della nostra form, non resta che scrivere il codice per il funzionamento. Le prime operazioni da fare sono quelle di aggiungere lo spazio dei nomi per la gestione delle email, in particolare la System.Net.
Passiamo in visualizzazione codice, ed in alto, dove termina l’ultimo spazio dei nomi, aggiungiamo quelli per la gestione della posta elettronica, qui di seguito le suddette operazioni.
//Spazio dei nomi invio email
using System.Net.Mail;
using System.Net;
Terminato l’inserimento dello spazio dei nomi, passiamo in visualizzazione grafica, a questo punto facciamo doppio click sul pulsante in modo che si passa in visualizzazione codice nell’evento click del pulsante stesso.
Le classi da utilizzare sono la “MailAddress” per la gestione degli indirizzi email, quali mittente e destinatario, la classe “MailMessage” per la gestione del messaggio, come allegati, oggetto, testo ed altre informazioni utili, ed infine la classe “SmtpClient” per la gestione dell’invio dell’email, con le impostazioni di autenticazione, host, e tanto altro.
Qui di seguito il frammento di codice delle suddette operazioni.
C#
private void BtnInvia_Click(object sender, EventArgs e)
{
try
{
MailAddress Destinatario = new MailAddress(TxtDestinatario.Text);
MailAddress Mittente = new MailAddress("AccountGmail@gmail.com");
MailMessage EmailInviare = new MailMessage(Mittente, Destinatario);
EmailInviare.Subject = TxtOggetto.Text;
EmailInviare.Body = TxtTesto.Text;
SmtpClient smtpServer = new SmtpClient();
smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpServer.Host = "smtp.gmail.com";
smtpServer.Port = 587;
smtpServer.UseDefaultCredentials = false;
smtpServer.Credentials = new NetworkCredential("indirizzo@gmail.com", "MiaPassword");
smtpServer.EnableSsl = true;
smtpServer.Send(EmailInviare);
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}
Conclusioni
L’articolo ha voluto fornire al lettore le informazioni di base per utilizzare la posta elettronica Gmail, oggi molto diffusa a livello mondiale e nel nostro paese, per l’invio di email dalle proprie applicazioni.
Lo stesso frammento di codice, modificando qualche parametro di proprietà è possibile utilizzarlo con altri indirizzi email, inoltre si può replicare anche per applicazioni web quali asp.net.
Il frammento di codice è utilizzabile anche con le precedenti versioni del Framework.