#16 Inviare e-mail in formato HTML con allegati

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.

11 pensieri su “#16 Inviare e-mail in formato HTML con allegati

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

    "Mi piace"

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

    "Mi piace"

  3. 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 🙂

    "Mi piace"

  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.

    "Mi piace"

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

    "Mi piace"

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.