Mandar E-Mails desde VB.NET

ANTES QUE NADA, NO ME HAGO RESPONSABLE POR EL USO QUE LE PUEDAN DAR A ESTA INFORMACIÓN, LA PUBLICACIÓN DE ESTE MATERIAL ESTA HECHO CON FINES DE LUCRO NETAMENTE EDUCATIVO

Para la realización de este tutorial utilizamos Visual Basic.NET.

Lo primero que debemos hacer es crear un proyecto y crear un formulario que se asemeje a la siguiente imagen.

Elementos utilzados

  • Cuatro TextBox con los nombres (propiedad name): txtDe, txtPara, txtAsunto y txtMensaje, este último con la propiedad Mutiline habilitada.
  • Un Button con nombre (propiedad name): btnEnviar.

Accedemos al código de nuestro programa, y debajo del nombre de nuestra clase pondremos la siguiente función que se encarga de verificar la conexión a internet.

 Private Declare Function IsNetworkAlive Lib "SENSAPI.DLL" (ByRef lpdwFlags As Long) As Long

Dentro del código del botón Enviar pondremos el siguiente código:

Dim Ret As Long
        'Si el Api retorna 0 quiere decir que no hay ningun tipo de conexión de Red
        If IsNetworkAlive(Ret) = 0 Then
            MsgBox("No existe conexion a internet" & vbNewLine + "Error enviando E-Mail." & vbNewLine & vbNewLine + "Por favor revise su conexion a internet" & vbNewLine + "e intentelo nuevamente.", MsgBoxStyle.Exclamation)
        Else
            Dim MyMailMsg As New Net.Mail.MailMessage
            Dim HostName As String = My.Computer.Name
 
            Try
                MyMailMsg.From = New Net.Mail.MailAddress(Me.txtDe.Text)
                MyMailMsg.To.Add(Me.txtPara.Text)
                MyMailMsg.Subject = Me.txtAsunto.Text
 
                MyMailMsg.Body = Me.txtMensaje.Text
                Dim SMTP As New Net.Mail.SmtpClient("smtp.live.com")
                'Para enviar por Hotmail utilizamos smtp.live.com y para enviar por Gmail utilizamos smtp.gmail.com

                SMTP.Port = 587
                SMTP.EnableSsl = True
 
                SMTP.Credentials = New System.Net.NetworkCredential("correovalido@hotmail.com", "contraseña")
                'Aquí es necesario utilizar una cuenta de correo electrónico válida para que podamos mandar nuestros correos.

                SMTP.Send(MyMailMsg)
                MsgBox("Tu E-Mail se ha enviado exitosamente", MsgBoxStyle.Information, "Listo!!")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If

Probamos nuestro programa.

Llenamos los datos para mandar un mensaje

Mandamos nuesto mensaje.

Mensaje de confirmación.

Verificamos que el correo llegue a nuestro destino.

Mensaje recibido.

Mensaje de nuestro correo.

Listo!!.. Espero sea de mucha ayuda.

Dudas, comentarios ó sugerencias, estamos para servirte!

Saludos!!

Be Sociable, Share!

Quizá te interese :

18 pensamientos en “Mandar E-Mails desde VB.NET

  1. Carlos

    ¿Podrias confirmar tomando tu ejemplo si con el smtp.live.com de hotmail se van a la carpeta correo no deseado? Creo que antes si se podia pero ya no es asi.

  2. Jorge Sosa Suazo

    Eso depende del correo destino, he probado con varios y la mayoría llegan a la bandeja de entrada.. solo con alguno llegan a los no deseados.. Saludos!!

  3. cjosemaria

    hola;
    Yo tengo que hacer eso mismo, pero con vb.net y mysql
    es decir, tengo que crear las tablas en mysql. Lo que no se es exactemente que tablas necesito y como hacerlo,

    serias tan amable de poder orientarme,

    gracias.

    Un saludo.
    Jose Maria.

  4. cjosemaria

    Hola;

    a mi me funciona perfectametne, lo unico que aunque yo ponga como emisor: anomimo@hotmail.com , al receptor del correo le llega la direccion de correo que he puesto en el codigo.

    no me llega como tu has puesto

    Que puedo estar haciendo mal?

    Un Saludo.
    Jose Maria.

  5. alonso

    hola prove tu codigo pero no me manda me sale error de 5.5.4 invalid address por haver si puedes ayudarme

  6. Jorge Autor

    Seguramente tienes mal escritas tus direcciones de correo o algo por el estilo.. Checalo.. sino nos dices para analizar el error..

    Saludos!!

  7. Jorge Autor

    Hola cjosemaria!
    Seguramente necesitas una tabla llamada contacts (contactos) con algunos campos como (nombre, apellidos, email, etc..) y de allí mandar correos al contacto que elijas..

    Si tienes mas dudas no dudes en preguntar..

  8. cjosemaria

    Hola Jorge;

    Muchas gracias por responder, no me habia dado cuenta que habias respondido, disculpa mi tardanza, en efecto, si va a una cuenta de hotmail, sale anonimo.

    FELIZ NAVIDAD!!!!!!!!!!

    Un Saludo
    Jose Maria

  9. Eduardo Peña

    Excelente código, me sirvio de mucho, lo implemente en una aplicación con ambiente web en .Net 2010 y funciona a la perfección, Gracias.

  10. Anonimo

    Hola! Yo tengo que hacer algo muy similar… Probé tu código pero me sale un error en “amp” dice que no esta declarado…?? y si sabes como se hacer para enviar correos a cualquier cuenta de correo…? Gracias! :)

  11. Jorge Autor

    Hola Anonimo, podrías solucionarlo si reemplazas los “&” por simples “&” saludos!!

  12. carlos

    Hola jorge buenos dias dos preguntas:

    1.- Como puedo hacerle para enviar dicho mensaje a varios correos a la vez, digamos con copia para …

    2.- Podrias hacerme el favor de proporcionarme el codigo, para adjuntar archivos en el correo.

    PD. probe tu codigo y funciona muy bien, solo que me faltan estos detallitos que te comento espero pronta tu respuesta y de ser posible, si me puedes mandar respuesta a mi correo, de antemano muchas gracias y saludos a todos

  13. Nelson

    Amigo excelente el aporte pero a la hora de enviar el correo cae una execpcion la cual es:
    el buzon de correo no está disponible. La respuesta del servidor fue: 5.7.3
    Request action aborted; user not authenticated
    Q podría ser???

  14. ipad auction

    I think this is one of the so much vital info for me. And i’m glad reading your article. However wanna remark on some basic issues, The website style is great, the articles is in reality nice : D. Good job, cheers

  15. adrian

    hola donde pongo el codigo ese para ver si hay conexion a internet
    esq no me sale
    ese visual basic.net es el mismo del vb 6.0 ??

  16. altair

    Hola tengo el código perfectamente bien pero me dice q hay un error:
    el buzón de correo no está disponible. La respuesta del servidor fue: 5.7.3 podrás ayudarme por fis!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>