#16 Inviare e-mail in formato HTML con allegati
Pubblicato da Mario De Ghetto su 25 Gennaio 2008
Per inviare un’e-mail con allegati e per di più in formato HTML non c’è niente di meglio che una manciata di codice VB.NET, come potete vedere dal seguente codice:
Imports System.Text Public Class Form1 Dim strBody As _ New StringBuilder("Ciao da Mario De Ghetto!,") Dim objMail As New System.Net.Mail.MailMessage() Dim strPath As String = "C:\prova.txt" Dim strFrom As String = "mittente@dominio.com" Dim strTo As String = "destinatario@libero.it" Private Sub Button1_Click(ByVal sender _ As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click strBody.Append("<br>") strBody.Append("<br>") strBody.Append("<strong>Testo di prova</strong>") strBody.Append("<br>") strBody.Append("<br>") strBody.Append("<br>") strBody.Append("Cordiali saluti.") strBody.Append("<br>") strBody.Append("Ditta XYZ") strBody.Append("<br>") Dim frmaddress As _ New System.Net.Mail.MailAddress(strFrom) Dim attachement As _ New System.Net.Mail.Attachment(strPath) objMail.To.Add(strTo) objMail.From = frmaddress objMail.Subject = "Invio documento allegato: " & strPath objMail.Priority = Net.Mail.MailPriority.High objMail.IsBodyHtml = True objMail.Body = strBody.ToString If strPath <> "" Then objMail.Attachments.Add(attachement) End If Dim SmtMail As _ New System.Net.Mail.SmtpClient("smtp.libero.it") SmtMail.Send(objMail) MessageBox.Show("Mail spedita!") End Sub End Class
Il codice è abbastanza chiaro. Ovviamente dovrete personalizzare i dati, come l’indirizzo del vostro server SMTP, l’indirizzo del mittente e del destinatario e così via. Se vi auto-inviate l’e-mail, potrete verificare che effettivamente c’è l’allegato e che il testo è in formato HTML.
Francesco detto
l’esempio che ho letto sopra è molto chiaro…..ma ho un problema:
sto creando un applicazione web in linguaggio vb.net e in una pagina aspx faccio scegliere un file all’utente che dovrà poi inviare come allegato in una e-mail
il problema sussiste nel momento in cui inserisco la stringa di percorso del file nell’oggetto mailAttachment….come posso risolvere ???????
Mario De Ghetto detto
Se ho capito bene il contesto, potresti fare prima l’upload del file dal PC dell’utente in una cartella del server.
A quel punto sai dov’è il file da allegare e quindi anche il percorso da utilizzare.
Una volta spedita l’e-mail, poi, cancelli il file dell’allegato.
Se questa soluzione non ti soddisfa fammi sapere.
Yuri detto
ciao Mario,
se io volessi mandare la stessa mail a più persone come dovrei fare?
è possibile far in modo che l’utente inserisca nella stessa textbox più indirizzi?
hai qualche consiglio?
grazie mille
Mario De Ghetto detto
Ciao Yuri.
Si, è possibile specificare più di un destinatario, semplicemente mettendo tutti i destinatari nella stessa stringa e separando ciascun indirizzo con una virgola, così:
Dim strTo As String = “destinatario@libero.it, altrodestinatario@tiscali.it”
Nel caso di una casella di testo, puoi mettere una nota all’utente che divida gli indirizzi con una virgola, oppure che inserisca un solo indirizzo in ogni riga della casella di testo e poi, al momento della composizione del messaggio, ci pensi tu a inserire la virgola tra un indirizzo e l’altro, se non già specificato dall’utente.
Fabrizio detto
Questo codice va inserito in un modulo di classe e richiamato dal main?
E dove metto la password per inviare la mail con il mio indirizzo di posta?