Envio de Email desde VB.Net

Hola, en esta nueva oportunidad les traigo una simple aplicacion para realizar envios de correo electronico desde visual basic.net en modo de escritorio.

para empezar, creamos un nuevo proyecto de vb.net y agregamos los siguientes controles:

3 radiobuttons

1 boton

varios labels

5 textbox

varios panels para contener los controles.

Ahora con estos controles, elaboramos un diseño similar al que se observa en la siguiente imagen:

Luego de esto, pasamos a la parte del codigo, inicialmente importamos las siguientes librerias:

Imports System.Net
Imports System.Net.Mail

Posteriormente declaramos las siguientes variables globales:

Private correo As New MailMessage
Private autenticar As New NetworkCredential
Private envio As New SmtpClient

Despues de esto creamos un procedimiento o subrutina llamado enviar_correo(), donde se estableceran todos los parametros necesarios para proceder a realizar el envio del email tales como:

correo.Body = Me.TextBox_mensaje.Text 'aqui va el cuerpo del mensaje
correo.Subject = Me.TextBox_asunto.Text 'aqui va el asunto del email
correo.IsBodyHtml = True 'se coloca en true para que el mensaje sea leido en formato html
correo.To.Add(Trim(Me.TextBox_destino.Text)) 'aqui va el destinatario, si se desean agregar varios destinatarios esta linea se repite
'tantas veces lo necesite

Ahora se especifica la cuenta desde la que se va a enviar el correo:

correo.From = New MailAddress(Me.TextBox_user.Text.Trim, "Mensajeria 1.0 vb.net ®")

Asi mismo indicamos el usuario y la contraseña de la persona que envia el e-mail:

envio.Credentials = New NetworkCredential(Me.TextBox_user.Text.Trim, Me.TextBox_pass.Text.Trim)

A continuacion, procedemos a establecer la configuracion de smtp (Simple Mail Transfer Protocol), para ello es conveniente tener en cuenta los siguientes parametros:

Asignar el Puerto del Servidor SMTP (gmail y yahoo usan el puerto 587, mientras que hotmail usa el 25)

Indicar si el servidor SMTP admite conexiones seguras o no (yahoo.es no admite conexiones seguras mientas que gmail y hotmail si la admiten)

Adjuntar un archivo si lo desea.

Teniendo esto claro se establecen condiciones para determinar si el Servidor SMTP es de gmail, yahoo o hotmail a traves de los radiobuttons, el codigo representativo para esta seccion es:


If (RadioButton_yahoo.Checked = True) Then

  'el correo es enviado desde yahoo
   envio.Host = "smtp.correo.yahoo.es" 'este esl el que utilizamos por la configuracion de smtp
   envio.Port = 587 'Puerto del Servidor smtp" 'gmail y yahoo usan el puerto 587, mientras que hotmail usa el 25
   envio.EnableSsl = False 'el servidor de yahoo.es no admite conexiones seguras, por eso se le asigna false,
   'mientas que gmail y hotmail si la admiten
   'correo.Attachments 'aqui se envian mensajes adjuntos

End If
If (RadioButton_hotmail.Checked = True) Then

  'el correo es enviado desde hotmail
   envio.Host = "smtp.live.com" 'este esl el que utilizamos por la configuracion de smtp
   envio.Port = 25 'Puerto del Servidor smtp" 'gmail y yahoo usan el puerto 587, mientras que hotmail usa el 25
   envio.EnableSsl = True
   'correo.Attachments 'aqui se envian mensajes adjuntos

End If
If (RadioButton_gmail.Checked = True) Then

    'el correo es enviado desde gmail
    envio.Host = "smtp.gmail.com" 'este esl el que utilizamos por la configuracion de smtp
    envio.Port = 587 'Puerto del Servidor smtp" 'gmail y yahoo usan el puerto 587, mientras que hotmail usa el 25
    envio.EnableSsl = True
    'correo.Attachments 'aqui se envian mensajes adjuntos

End If

De la manera anterior se puede configurar el envio de correo de acuerdo al servidor que se use, pero para efectuar el envio como tal, se debe indicar la siguiente instruccion:

envio.Send(correo)

Bien, si desean ver de una manera general y mas completa la funcion enviar_correo() a continuacion les colocare todo lo que he incluido en dicha funcion:

Sub enviar_correo()
  Try
    correo.Body = Me.TextBox_mensaje.Text 'aqui va el cuerpo del mensaje
    correo.Subject = Me.TextBox_asunto.Text 'aqui va el asunto
    correo.IsBodyHtml = True
    correo.To.Add(Trim(Me.TextBox_destino.Text)) 'aqui va el destinatario

  'ahora se especifica la cuenta desde la que se envia el correo

   correo.From = New MailAddress(Me.TextBox_user.Text.Trim, "Mensajeria 1.0 vb.net ®")

  'ahora indicamos el usuario y la contraseña de la persona que envia el e-mail

   envio.Credentials = New NetworkCredential(Me.TextBox_user.Text.Trim, Me.TextBox_pass.Text.Trim)

'verifico si es hotmail, gmail o yahoo

     If (RadioButton_yahoo.Checked = True) Then

         'el correo es enviado desde yahoo
          envio.Host = "smtp.correo.yahoo.es"
          envio.Port = 587
          envio.EnableSsl = False
          'correo.Attachments 'aqui se envian mensajes adjuntos

     End If

If (RadioButton_hotmail.Checked = True) Then

       'el correo es enviado desde hotmail
        envio.Host = "smtp.live.com"
        envio.Port = 25
        envio.EnableSsl = True
        'correo.Attachments 'aqui se envian mensajes adjuntos

      End If

If (RadioButton_gmail.Checked = True) Then

        'el correo es enviado desde gmail
         envio.Host = "smtp.gmail.com"
         envio.Port = 587
         envio.EnableSsl = True
         'correo.Attachments 'aqui se envian mensajes adjuntos

     End If
   'Procedo a enviar el correo

    envio.Send(correo)

   MessageBox.Show("Correo Enviado exitosamente...", "Mensajeria 1.0 vb.net ®", MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex As Exception

MessageBox.Show(ex.Message, "Mensajeria 1.0 vb.net ®", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub

Por ultimo, solo resta llamar a la funcion enviar_correo() en el evento click del boton:

 enviar_correo()

para hacerle una prueba al programa, solo se deben llenar los campos en las cajas de texto tal y como se ve a continuacion:

si haces clic sobre el boton enviar, se procede a efectuar dicho envio, por ultimo aparecera un mensaje de confirmacion


algo importante que deben tener y en cuenta y que no se les puede olvidar es escribir correctamente su usuario y contraseña en la opcion login de cuenta.
Eso es todo sobre este post amigos!, espero y les sea de utilidad.
Si desean descargar este programa pueden hacerlo a traves del siguiente enlace.

Descargar Programa

Anuncios

10 respuestas a “Envio de Email desde VB.Net

  1. Hola, estoy adaptando tu programa, para realizar incidencias de los usuarios, pero me quedo una duda, con respecto a como enviar un “nuevo” email desde el programa… porque si envio el 1er email va bien.. pero en el 2do se envia junto con el 1ero y en el cuerpo del mensaje aparece el 1ero y el 2do-… sabes que puedo estar haciendo mal? gracias.

    • Hola carlos, ya me di cuenta de tu problema, para evitar que se repita el destinatario y el cuerpo del mensaje al enviar mas de 1 email debes colocar al principio de la funcion enviar_correo() las siguientes instrucciones para limpiar los parametros del correo:

        correo.To.Clear()
        correo.Body = ""
        correo.Subject = ""
      
    • Ya lo corregui,e ra un error del puerto de hotmail…

      Ahora tengo una nueva duda, quisiera saber cual es número máximo de correos que se pueden enviar, ya que me manda un mensaje de

      Exceeded storage allocation. The server response was 5.3.4 Requested action aborted; Our daily message limit was meant to stop spammers– we’re sorry that it’s getting in your way. You can wait a day to send your message.

      Alguna idea de como correguirlo…?!?!?!?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s