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.
Informació Bitacoras.com ...
Si vols, pots fer click per valorar aquest post en Bitacoras.com. Gràcies ....
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
pots utilitzar la següent línia perquè no d'error:
miCorreo.From = New System.Net.Mail.MailAddress ("josem.flores @ sfb.es")
Eliseo
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.
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ó.
Thank you!
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.
Moltes gràcies i una salutació.
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ó.
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ó.
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
Aquesta és una funció molt bona! gràcies per poder compartir això amb nosaltres
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í ...
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
parcers moltes gràcies són uns caps de verda que em va servir molt la informació.
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.
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.
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
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.
Gràcies pel codi
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?
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
Amb Windows 7 Professional no funciona, perquè??
Excel · lent el codi germà
mil gràcies
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ó ??
jo de nou si a algú no li surt provi amb el port 587 a hotmail
gràcies va estar molt bo tot això em va servir de meravella
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.
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
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!
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.
gràcies per les aportacions em va servir muchisisisimo enserio
Gràcies a mi em va funcionar de meravella
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!
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
smtp.Port = "587" 'No és 25, és 587 i et funciona perfecte.
Muyyyy bo funciona de 10!!! ... Exelente aportació! Ara li foto mà ... Moltíssimes gràcies =)
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
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 ...
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
jo posaria aquest codi en un botó enviar després de validar que es van ingressar totes les dades necessari.
Sort
Tot va sortir excel · lent!
Gràcies per l'aportació
Un Salutació
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
Moltes gràcies. Una petita contribució.
Per envia amb còpia (CC) =
correo.CC.Add ("direcciò de correu")
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.
Remplazalo per &
Msgbox ("ERROR:" & ex.Message, MsgBoxStyle.OkOnly, "Error!")
Mooooltes gràcies .. ja vaig trobar la solucioen
Podries afegir com enviar o element o com afegir arxius que són??
Gràcies a tots pel codi!
funciona de meravella!!
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ò??
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.