Enviar correos desde Gmail usando VB.NET

Como siempre trasteando, quería hacer una aplicacion para enviar emails desde mi cuenta de Gmail. El único problema es que Gmail tiene ciertas peculiaridades, en su servicio SMTP.

En principio el servidor SMTP (Simple Mail Transfer Protocol) de Gmail, no usa el puerto por defecto, sino que utiliza el 587. Además es necesario habilitar el servicio de SSL (Secure Sockets Layer).

Yo he usado en este ejemplo, VB.NET pero daría igual usa C#, ya que básicamente se usan dos clases las que uso:

  • System.Net.Mail.MailMessage
  • System.Net.NetworkCredential

Crea una aplicacion de consola, pega este código y modifica los parámetros necesarios:

Imports System
Imports System.Collections
Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mime
Module SendEmailUsingGmail
    Sub Main()
        'Definicion e instanciacion de la clase MailMessage
        Dim MMessage As System.Net.Mail.MailMessage = 
		New System.Net.Mail.MailMessage()
        'Rellenamos los parametros usuales para el envio de un email
        MMessage.To.Add("user@domain.com")
        MMessage.From = New MailAddress("my_user@gmail.com", 
		"my_user", System.Text.Encoding.UTF8)
        MMessage.Subject = "Test"
        MMessage.SubjectEncoding = System.Text.Encoding.UTF8
        MMessage.Body = "Esto es una prueba"
        MMessage.BodyEncoding = System.Text.Encoding.UTF8
        MMessage.IsBodyHtml = False 'Formato texto plano
        'Definimos nuestras credenciales para el unvio de emails a traves de Gmail
        Dim SClient As New SmtpClient()
        SClient.Credentials = New System.Net.NetworkCredential("my_user@gmail.com", 
		"my_password")
        SClient.Host = "smtp.gmail.com" 'Servidor SMTP de Gmail
        SClient.Port = 587 'Puerto del SMTP de Gmail
        SClient.EnableSsl = True 'Habilita el SSL, necesio en Gmail
        'Capturamos los errores en el envio
        Try
            SClient.Send(MMessage)
            Console.WriteLine("Mensaje enviado correctamente")
            Console.ReadLine()
        Catch ex As System.Net.Mail.SmtpException
            Console.WriteLine(ex.Message)
            Console.ReadLine()
        End Try
    End Sub
End Module

8 pensamientos en “Enviar correos desde Gmail usando VB.NET

  1. mario

    al ejecutar el programa me envía un error de que no puede enviar el mail, en la ventana de aplicación me envía el siguiente mensaje A first chance exception of type ‘System.Net.Mail.SmtpException’ occurred in System.dll

    Responder
  2. OMG

    Hola Mario, ese error sugiere que no tienes permisos para enviar correos desde programación, por lo que puedes estar siendo bloqueado por el Dominio/Directorio Activo. También puedes estar siendo bloqueado por algun software de seguridad o antivirus.

    Que estas usando como Servidor SMTP? Estas en tu servidor IIS local?

    Responder
  3. Carlos

    Hola he probado el codigo que han dejado estoy usando Visual Estudio 2005 y he adaptado el codigo para mi uso, el problema esta en la captura de errores despues de ejecutar el codigo obtengo el siguiente error
    “The operation has timed out.” por lo que no envia el mail yo utilizo SSL con el puerto 465 que estara sucediendo ????

    Responder
  4. Mauricio

    Hola, gracias por la ayuda, he utilizado con exito el codigo en aplicación de consola vb.net 2005 y tambien en aplicación web, se agradese la ayuda.

    Responder
  5. Magistrado1914

    Usa la Instrucción:

    With Objeto

    .Declaraciones
    ……
    End With

    Me explico:

    With MMessage
    .To.Add(“user@domain.com”)
    .From = New MailAddress(“my_user@gmail.com”,
    “my_user”, System.Text.Encoding.UTF8)
    .Subject = “Test”
    .SubjectEncoding = System.Text.Encoding.UTF8
    .Body = “Esto es una prueba”
    .BodyEncoding = System.Text.Encoding.UTF8
    .IsBodyHtml = False ‘Formato texto plano
    ‘Definimos nuestras credenciales para el unvio de emails a traves de Gmail
    Dim SClient As New SmtpClient()
    With SClient
    .Credentials = New System.Net.NetworkCredential(“my_user@gmail.com”,
    “my_password”)
    .Host = “smtp.gmail.com” ‘Servidor SMTP de Gmail
    .Port = 587 ‘Puerto del SMTP de Gmail
    .EnableSsl = True ‘Habilita el SSL, necesio en Gmail
    End With
    End With
    ‘Capturamos los errores en el envio
    Try

    SClient.Send(MMessage)
    Console.WriteLine(“Mensaje enviado correctamente”)
    Console.ReadLine()
    Catch ex As System.Net.Mail.SmtpException
    Console.WriteLine(ex.Message)
    Console.ReadLine()
    End Try

    Igual buena información.

    Responder

Deja un comentario

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