Mario De Ghetto

Microsoft MVP – Visual Basic (VB.NET: Programmare che passione!)

#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.

5 Risposte a “#16 Inviare e-mail in formato HTML con allegati”

  1. 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 ???????

  2. 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. :-)

  3. 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 :)

  4. 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.

  5. 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?

Lascia una Risposta

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>