Enviar e-mail des d'una aplicació windows

Per poder enviar un mail des de la nostra aplicació windows en visual basic. net utilitzarem la classe System.Net.Mail.MailMessage.

Per a l'exemple següent crearem un formulari (Form1), una caixa de text per escriure el missatge (TextBox1) i un botó (Button1) amb el text enviar per enviar el correu electrònic.


 Dim miCorreo As New System.Net.Mail.MailMessage

 miCorreo.IsBodyHtml = False
 miCorreo.From = "info@solovb.net" 'mail des d'on s'envia
 correo.To.Add ("usuario@hotmail.com") 'Mail del destinatari
 correo.Subject = "Missatge de prova des aplicació windows [solovb.net]" 'Assumpte

 miCorreo.Body = TextBox1.Text 'Cos del missatge

 miCorreo.Priority = System.Net.Mail.MailPriority.Normal 'Prioritat

 Dim smtp As New System.Net.Mail.SmtpClient

 smtp.Host = "smtp.solovb.net"
 'Per les credencials he de passar-li el compte i la clau des d'on s'envia
 smtp.Credentials = New System.Net.NetworkCredential ("info@solovb.net", "clave123456"))

 Try
       smtp.Send (miCorreo)
       Msgbox ("Missatge enviat.", MsgBoxStyle.OkOnly, "solovb.net")
 Catch ex As Exception
       Msgbox ("ERROR:" & ex.Message, MsgBoxStyle.OkOnly, "Error!")
 End Try

La veritat que es pot afegir molta funcionalitat a aquest exemple, com les caixes de text per al remitent, destinatari i les opcions de configuració del SMTP.

Però per a un exemple (com a mi m'agrada) com més senzill millor s'entén ... ja hi haurà temps de complicar, jaja.

Si posem la propietat IsBodyHtml a True, podrem omplir el cos amb codi HTML perquè el nostre missatge vaig arribar amb un millor look.

Si et va servir, deixa un comentari.

50 Responses to "Enviar correu electrònic des d'una aplicació windows"

  1. Informació Bitacoras.com ...

    Si vols, pots fer click per valorar aquest post en Bitacoras.com. Gràcies ....

  2. Jose diu:

    Bones.

    Una pregunta, en la següent línia:

    miCorreo.From = "josem.flores @ sfb.es" 'mail des d'on s'envia

    Em indica que un valor de tipus "String" no es pot convertir en 'System.Net.Mail.MailAdress'

    A veure si em pots donar un cop de mà si us plau. Ja que ho he modificat però no sóc capaç de solucionar aquest error.

    Una salutació i gràcies

    • Eliseu diu:

      pots utilitzar la següent línia perquè no d'error:

      miCorreo.From = New System.Net.Mail.MailAddress ("josem.flores @ sfb.es")

      Eliseo

  3. Jose diu:

    Moltes Gràcies.

    Però tinc un problema, et pego meu codi i et dic el problema:

    Dim _Message As New System.Net.Mail.MailMessage ()

    Dim _SMTP As New System.Net.Mail.SmtpClient

    'CONFIGURACIÓ DEL STMP

    _SMTP.Credentials = New System.Net.NetworkCredential ("compte de correu", "contrasenya")

    _SMTP.Host = "Smtp.gmail.com"

    _SMTP.Port = 465

    _SMTP.EnableSsl = True

    'CONFIGURACIÓ DEL MISSATGE

    _Message. [To]. Add ("compte de correu") 'Compte de Correu al qual se li vol enviar el correu electrònic

    _Message.From = New System.Net.Mail.MailAddress ("compte de correu", "nom", System.Text.Encoding.UTF8) 'Qui ho envia

    _Message.Subject = "Prova" 'Subjecte del correu electrònic

    _Message.SubjectEncoding = System.Text.Encoding.UTF8 'Codificació

    _Message.Body = "Això és una prova" 'contingut del mail

    _Message.BodyEncoding = System.Text.Encoding.UTF8

    '_Message.Priority = System.Net.Mail.MailPriority.Normal

    _Message.IsBodyHtml = False

    'ADDICIÓ DE DADES ADJUNTS

    'Dim _File As String = My.Application.Info.DirectoryPath & "arxiu"' arxiu que es vol adjuntar

    'Dim _Attachment As New System.Net.Mail.Attachment (_File, System.Net.Mime.MediaTypeNames.Application.Octet)

    '_Message.Attachments.Add (_Attachment)

    'ENVIAMENT

    Try

    _SMTP.Send (_Message)

    Catch ex As System.Net.Mail.SmtpException

    'MessageBox.Show (ex.ToString)

    End Try

    Aquest és el codi ok.

    D'acord, doncs quan vaig a enviar el correu em surt el següent error:

    S'ha superat el temps d'espera de l'aplicació.

    Fent un telnet a smtp.gmail.com 465 connecto perfectament, però no obstant això no aconsegueixo enviar el correu ...

    Et agrairia, si pots clar, que em donessis un solució, ja que no sóc capaç d'aconseguir-...

    Una salutació i moltes gràcies per endavant.

  4. Eliseu diu:

    El codi està bé, de fet ho ús en apliaciones i està funcionant. Aparentment el tema és amb alguna configuració de gmail que estigui faltant. Amb gmail em dóna un error. Si aconsegueixo que funcioni amb gmail, publicaré la solució.

  5. foogeobre diu:

    Thank you!

  6. Jose diu:

    Ok Eliseo.

    Jo canviï el port ja que amb el 587 no em deixava ni arribar per telnet, però segueix sense funcionar ...

    Seguire buscant i si amb si alguna cosa t'ho dic. I espero la teva solució si no ho aconsegueixo. : D

    Moltes gràcies i una salutació.

  7. Jose diu:

    Per cert.

    Em pots dir algun servidor smtp que funcioni correctament, amb el que el teu estiguis funcionant per exemple, per que necessito implementar-més aviat possible i no sóc capaç de trobar cap servidor amb el que funcioni ...

    A veure si em pots dir amb qui ho fas tu i ho provo, a veure si així si em funciona. ;)

    Moltes gràcies de nou.

    Una salutació.

  8. Jose diu:

    Bones.

    Ja està tot solucionat, era problema de l'Antivirus, que tallava els programes cuc que realitzaven un enviament massiu de correu ... Cal introduir el procés en les excepcions i funciona correctament.

    Moltes gràcies.

    Una salutació.

  9. kyha diu:

    Bon dia.

    Tinc un codi molt i molt semblant al suyo.El Problema és que no no m'envia el correu fins que no tanco l'aplicació, o enviament altre correu que entionces aquest últim no s'envia. ¿Sabries el perquè o com puc solucionar-ho?
    Gràcies

  10. Carlos diu:

    Aquesta és una funció molt bona! gràcies per poder compartir això amb nosaltres : D

  11. Marí diu:

    Gràcies per compartir aquest codi ... Ja m'estava tornant boig i res que em sortia el correu. Gràcies al teu vaig solucionar l'error. Segueix així ... :)

  12. Pharsat diu:

    Holas, per a aquells que no troben un servidor smtp que funcioni els dono a configuració d'un que s'usa amb windows live hotmail, és 100% segur els deixo el meu codi perquè observin.

    si us plau en el seu programa no modificar el codi relacionat a la configuració del server per evitar errors.

    Dim miCorreo As New System.Net.Mail.MailMessage

    miCorreo.IsBodyHtml = False
    miCorreo.From = New System.Net.Mail.MailAddress ("ejemplo@hotmail.com") 'mail des d'on s'envia
    miCorreo.To.Add ("ejemplo@hotmail.com") 'Mail del destinatari
    miCorreo.Subject = "exemple" 'Assumpte
    miCorreo.Body = "pots posar una cadena de text o codi html si expesificas que el missatge ho inclourà"
    miCorreo.Priority = System.Net.Mail.MailPriority.Normal 'Prioritat
    'No modificar les següents línies ja qye corresponen a la coniguracion del server smtp de Microsoft (windows live)
    Dim smtp As New System.Net.Mail.SmtpClient

    smtp.Host = "smtp.live.com"
    smtp.Port = "25"
    smtp.EnableSsl = True

    'Per les credencials he de passar-li el compte i la clau des d'on s'envia
    smtp.Credentials = New System.Net.NetworkCredential ("ejemplo@hotmail.com", "contrasenya")

    Try
    smtp.Send (miCorreo)
    Msgbox ("Missatge enviat.", MsgBoxStyle.OkOnly)
    Catch ex As Exception
    Msgbox ("ERROR:")
    End Try

    i d'últim agredezco a el creador del tema em va servir massa. gràcies

  13. oscar diu:

    parcers moltes gràcies són uns caps de verda que em va servir molt la informació.

  14. Gonzalo diu:

    Hola, a algun li andubo? , Va poder enviar algun mail?
    a mi em dóna error en intentar enviar un mail : (
    la part de les credencials aquesta bé?
    o on puc aconseguir una altra?

    Salutacions.

  15. alejandro diu:

    Bones per a tots, aquest post m'ha servit moltíssim, però tinc un petit inconvenient quan vaig adjuntar un fitxer, em surt el següent error: No es va controlar NotSupportedException
    No s'admet el format proporcionat de la ruta d'accés.

    Codi:
    Dim arxiu As String = My.Application.Info.DirectoryPath & "c: \ arcchivo.rar"

    __________________inicio on marca error
    Dim adjunt As New System.Net.Mail.Attachment (arxiu, System.Net.Mime.MediaTypeNames.Application.Pdf)
    msg.Attachments.Add (adjunt)
    __________________fin on marca error

    si algú em pot dir que estic fent malament se'ls agraeixo per endavant.

    Segueixin així uts són de gran ajuda.

  16. Gianpiere Ramos Bernuy diu:

    hola q tal ta chebre teu post però per q et funcioni pots canviar el
    _SMTP.Port = 465
    per
    _SMTP.Port = 587
    a mi em funciono amb aquest.
    sort q Déu et beneeixi

  17. jose diu:

    He provat aquest codi i em va funcionar perfecte, vaig fer les modificacions per al servidor smtp recomendades per Pharsat i l'anotació d'Eliseo per miCorreo.From = New System.Net.Mail.MailAddress ("josem.flores @ sfb.es") i va quedar de meravella, moltes gràcies.

  18. Charly diu:

    Gràcies pel codi

  19. dosmilcero diu:

    Hola.

    He desenvolupat un programa per a enviar amb SMTP accedint a un servidor exchange amb SSL que requereix autenticació. El programa funciona perfectament des de qualsevol pc extern a la xarxa on es troba el servidor exchange, però, si ho instal · lo en un pc de la xarxa del servidor exchange, no funciona. Sempre dóna error de servidor no trobat.

    Fent PING al servidor des de la xarxa local amb el DNS, IP publica, privada, telnet, etc .. sempre hi ha resposta. Al servidor Exchange el log no diu res, és clar que no s'assabenta. Antivirus i tallafocs desconnectats Alguna idea?

  20. fredy diu:

    hola el codi q des parsat mefunciona de marabillas però tinc un problema és q tinc un formulari on van apoder posar qualsevol correu per enviés el missatge, com puc espesificar en l'script els q consulteu els camps del formulari per q sàpiga aq correu va enviar el missatge, l'assumpte
    et agradeseria molt si mepudes puga ajudar

  21. arturo diu:

    Amb Windows 7 Professional no funciona, perquè??

  22. Julian Builes diu:

    Excel · lent el codi germà

    mil gràcies

  23. Cristian diu:

    Hola a tots ia intenteu amb el codi original, el de parshat amb la modificació de l'altre companyia ja desactivi l'antivirus i el firewall i tot i així no em dóna l'enviament el codi el copia i enganxa canviant el camps obvis algú em pot donar una altra solució ??

  24. Cristian diu:

    jo de nou si a algú no li surt provi amb el port 587 a hotmail

  25. john diu:

    gràcies va estar molt bo tot això em va servir de meravella

  26. Jesus diu:

    Hola. Aquests són els meus primers passos per vb.net, (fins ara cap amb VB6). El codi per enviar email m'ha servidor perfectament, és molt bon exemple. Ara ho vull complicar per als justificants, adjunts, etc. Volia preguntar una coseta ¿Podries enviar-me un exemple per descarregar correu? Moltes gràcies per tot.

  27. Lester diu:

    una consulta ami ja m'envia correus el problema és que necessito envviar una imatge al cos del correu no com adjunt (tipus publicitat) però no em deixa no la envia .. ja tinc en un richtextbox la imatge però no envia res ... si algú em pot ajudar els agrairia molt

    el meu correu és lesterelpepecalderon@hotmail.com

  28. Eigthy diu:

    He posat una mica més de bellesa al formulari afegint TextBox s i un richtextbox i un botó, perquè paresca mes un formulari web. Per això crearem:

    Textbox1 (assumpte)
    Textbox2 (destinatari)
    Textbox3 (el teu correu)
    Textbox4 (passwor - contrasenya)
    Richtextbox1 (missatge)
    Button1 (botó d'enviar)

    està configurat per hotmail, més endavant deixo el codi:

    Button1 clic:

    Dim miCorreo As New System.Net.Mail.MailMessage

    miCorreo.IsBodyHtml = False
    miCorreo.From = New System.Net.Mail.MailAddress (TextBox2.Text) 'mail des d'on s'envia
    miCorreo.To.Add (TextBox3.Text) 'Mail del destinatari
    miCorreo.Subject = TextBox1.Text 'Assumpte
    miCorreo.Body = RichTextBox1.Text
    miCorreo.Priority = System.Net.Mail.MailPriority.Normal 'Prioritat

    'No modificar les següents línies ja que corresponen a la coniguracion del server smtp de Microsoft (windows live)
    Dim smtp As New System.Net.Mail.SmtpClient

    smtp.Host = "smtp.live.com"
    smtp.Port = 25
    smtp.EnableSsl = True

    'Per les credencials he de passar-li el compte i la clau des d'on s'envia
    smtp.Credentials = New System.Net.NetworkCredential (TextBox3.Text, TextBox4.Text)

    Try
    smtp.Send (miCorreo)
    Msgbox ("Missatge enviat.", MsgBoxStyle.OkOnly)
    Catch ex As Exception
    Msgbox ("ERROR:")
    End Try

    com veuen seguiment el codi original més el codi de Marí que va fer la configuracio del smtp per hotmail jo simplement vaig donar més bellesa al formulari com es mostra en aquesta imatge: http://i46.tinypic.com/34ir2c0.jpg

    espero i els serveixi salutacions i gràcies SoloVB

    m'acomiado!

  29. sagilman diu:

    hola em surt el següent error i no se perquè ja vaig posar tot el codi com és.
    l'error és:
    Failure sending message.

    algú que em pugui ajudar siusplau.

  30. juan miguel diu:

    gràcies per les aportacions em va servir muchisisisimo enserio :)

  31. Renan Cardona diu:

    Gràcies a mi em va funcionar de meravella

  32. sonia diu:

    Hola, he d'enviar un un enllaç automàticament donant a un botó on les dades m'ho he de portar d'un select sobre la base de dada oracle, que l'únic que ha de tenir és un per, assumpte: el text que ira dins i l'enllaç que s'ha d'enviar però no se com fer-ho podrien ajudar!

  33. Fernando diu:

    hey amics a mi no em va funcionar mm em dóna error

    el codigolo tinc així

    Public Class Form1

    Public Sub enviarcorreo ()

    Dim miCorreo As New System.Net.Mail.MailMessage
    miCorreo.IsBodyHtml = False
    miCorreo.From = New System.Net.Mail.MailAddress ("luisfernandop.s @ hotmail.com") 'mail des d'on s'envia
    miCorreo.To.Add ("luisfernandop.s @ hotmail.com") 'Mail del destinatari
    miCorreo.Subject = "prova fer" 'Assumpte
    miCorreo.Body = "res"
    miCorreo.Priority = System.Net.Mail.MailPriority.Normal 'Prioritat
    'No modificar les següents línies ja qye corresponen a la coniguracion del server smtp de Microsoft (windows live)
    Dim smtp As New System.Net.Mail.SmtpClient

    smtp.Host = "smtp.live.com"
    smtp.Port = 25
    smtp.EnableSsl = True

    'Per les credencials he de passar-li el compte i la clau des d'on s'envia
    smtp.Credentials = New System.Net.NetworkCredential ("luisfernandop.s @ hotmail.com", "/ n @ ndo/6724766887")

    Try
    smtp.Send (miCorreo)
    Msgbox ("Missatge enviat.", MsgBoxStyle.OkOnly)
    Catch ex As Exception
    Msgbox ("ERROR:")
    End Try
    End Sub

    Private Sub Button1_Click (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Button1.Click
    enviarcorreo ()

    End Sub
    End Class

    si algú em pogués fer veure el meu error el agrairia molt

  34. Cristian Chocobar diu:

    Muyyyy bo funciona de 10!!! ... Exelente aportació! Ara li foto mà ... Moltíssimes gràcies =)

  35. Edgar diu:

    Xuta gràcies a Pharsat ..
    la teva aportació em va ajudar molt ...

    gràcies a tots els que aporten amb el seu codi q ajuden tant

  36. Edgar diu:

    Hola xfa algú pe podria dir com faig quan desig enviar missatges des d'un altre correu que no sigui hotmail ..

    per exemple yahoo, gmail, etc ... o del servidor de la meva empresa ...

  37. leboche diu:

    discula 1 dudami aquest és el meu codi:

    Dim micorreo As New System.Net.Mail.MailMessage
    Dim correu As New System.Net.Mail.MailMessage
    micorreo.IsBodyHtml = False
    micorreo.From = New System.Net.Mail.MailAddress ("leboche@hotmail.com")
    correo.To.Add ("leboche@hotmail.com")
    correo.Subject = "missatge de prova"

    micorreo.Body = TextBox1.Text

    micorreo.Priority = Net.Mail.MailPriority.Normal

    Dim smtp As New System.Net.Mail.SmtpClient
    smtp.Host = "smtp.live.com"
    smtp.Port = 587
    smtp.EnableSsl = True
    smtp.Credentials = New System.Net.NetworkCredential ("info@solovb.net", "123456")

    Try
    smtp.Send (micorreo)
    Msgbox ("Missatge enviat.", MsgBoxStyle.OkOnly, "info@solovb.net")
    Catch ex As Exception
    Msgbox ("Erro:")

    End Try

    però no se si aquest codi en el from oa TextBox o en un button em podries ajudar?
    sóc principiant en ESOT

  38. Melesio Sales diu:

    Tot va sortir excel · lent!

    Gràcies per l'aportació

    Un Salutació

  39. Gilmer 20 diu:

    molt interessant el teu exemple i sobretod fàcil d'entendre però tinc una pregunta, vull que en cos del correu sigui el contingut d'un Report
    com dificio és part, espero la seva ajuda

  40. CarlosH diu:

    Moltes gràcies. Una petita contribució.
    Per envia amb còpia (CC) =
    correo.CC.Add ("direcciò de correu")

  41. Javier diu:

    Hola, tinc aquest problema:

    em diu "No s'ha declarat el nom amp"
    i
    "El caràcter no és vàlid" pel "," que està al costat de amp.

    qui pugui ajudar-me moltes gràcies.

  42. Javier diu:

    Mooooltes gràcies .. ja vaig trobar la solucioen :)

  43. Javier diu:

    Podries afegir com enviar o element o com afegir arxius que són??

  44. Jordi diu:

    Gràcies a tots pel codi!

    funciona de meravella!!

  45. Marce diu:

    Hola,
    molt bona la pàgina,
    quisisera saber si a través del codi d'enviament de correu es pot enviar una còpia oculta Bcc cap a una casella, on hi ha diversos correus més, és possible això??

  46. jhoanna0627 diu:

    hola:

    moltes gràcies em va servir de meravella, li agraeixo, per fi vaig poder enviar correus, tot i que tinc unes duditas respecte a com es posa un enllaç en el cos, de quina manera es personalitza amb etiquetes html i com enviar un adjunto.muchas gràcies, el codi em funciono perfecte.

Comentar