Oggi sto lavorando su una piccola applicazione che, fra le altre cose, ha il compito di notificare ad alcuni utenti l’arrivo di dati da un server ftp.
L’applicazione ascolta la cartella di arrivo del server ftp in modo diretto tramite un file system watcher e quando un file viene ricevuto, lo sposta nella giusta sede e notifica agli utenti l’arrivo dei nuovi dati.
La notifica viene spedita via e-mail. Spedire un e-mail usando .NET è molto facile, ma cercando uno snippet che lo facesse sul web non ho trovato alcun esempio semplice, pertanto ne ho scritto uno qui in modo che se a qualcuno serve è pronto.
//Metodo di trasmissione email
public void Send( string pUser, string pPassword )
{
//predispone l’inidirzzo del mittente
MailAddress from = new MailAddress("noreply@mydomain.com");
//predispone l’indirizzo destinatario, se ne avete più di uno basta aggiungerlo
//alle collezioni To, CC or BCC della classe MailMessage
MailAddress to = new MailAddress("recipientuser@hisdomain.com");
//Creo il messaggio
MailMessage msg = new MailMessage();
//Metto il mittente negli indirizzi from, mittente, risposta
msg.From = from;
msg.Sender = from;
msg.ReplyTo = from;
//Metto il destinatario nella collezione
msg.To.Add(to);
//predispongo l’oggetto
msg.Subject = "Subject of my message";
//Do al messaggio una priorità
msg.Priority = MailPriority.Normal;
//indico se il messaggio è un testo o un HTML
msg.IsBodyHtml = false;
//Scrivo il corpo del messaggio
msg.Body = "Simple text message body";
//Aggiungo un attachment di esempio
if (File.Exists("c:\\myattachment.xml")
{
msg.Attachments.Add(new Attachment("c:\\myattachment.xml"));
}
//Genero il client SMTP indicando l’indirizzo del server
SmtpClient smtp = new SmtpClient("mail.mydomain.local");
//indico il metodo di trasmissione
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//Qui è possibile anche modificare la porta se necessario
//Se il server richiede le credenziali, le indichiamo qui
if (pUser != null && pUser.Trim().Length > 0)
{
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(pUser, pPassword);
}
//E spediamo il messaggio
smtp.Send(msg);
}
Se il messaggio che dovete spedire è in HTML basta cambiare 2 righe:
//Indicate if it is an html or text message
msg.IsBodyHtml = true;
//Set the message body
msg.Body = "<html><body><p>Simple HTML message body.</p></body></html>";
è ovvio che tutte le stringhe della funzione di esempio le sostituirete con opportuni parametri e magari i dati del server li metterete nei setting applicativi così da creare una applicazione più flessibile. Buon lavoro.
Technorati Tag:
C#,
E-mail,
SMTP