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

About these ads

Pubblicato il 25 gennaio 2008, in Tips con tag , , . Aggiungi il permalink ai segnalibri. 11 commenti.

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

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

  6. Scusa, ma se io mi devo autentificare sul server smtp x spedire?
    ..uso gmail

  7. Paolo Puglisi

    Ciao Mario De Ghetto ma come fai ad autenticarti sul tuo server di posta con username e password? A me non funziona….

  8. Ciao Paolo,
    in effetti hai ragione, perché questo codice funziona solo con i server SMTP che non richiedono le credenziali di accesso e oggi quasi tutti i server SMTP le richiedono.
    Ecco quindi che ho aggiornato il codice con questo post:

    http://deghetto.wordpress.com/2012/03/19/inviare-e-mail-in-formato-html-con-allegati-re-loaded/

    Prova a vedere se così riesci a farlo funzionare.
    Ciao!

  1. Pingback: Inviare e-mail in formato HTML con allegati (re-loaded!) « VB & .NET – Mario De Ghetto

  2. Pingback: Send e-mail in HTML format with attachments (re-loaded!) | VB & .NET (eng)

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 843 follower

%d blogger cliccano Mi Piace per questo: