Cómo enviar correo electrónico por código usando cuentas de GMail

Enviar correo electrónico desde código .NET usando un servidor SMTP es muy fácil gracias al uso de la clase System.Net.Mail.MailMessage.

Un servidor SMTP normal trabaja a través del puerto 25 y sólo necesitaremos tener unas credenciales válidas en el mismoq ue nos permitan enviar correo. Lo habitual en una aplicación cualquiera es usar el servidor SMTP de nuestra cuenta de correo favorito con esta técnica sin problemas.

Pero ¿qué pasa si nuestra cuenta de correo es de GMail? Pues que la técnica convencional no funcionará. El motivo es que GMail usa un puerto diferente y además precisa el uso de una conexión cifrada con SSL para seguridad, por lo que el código normal que vas a encontrar por ahí no te servirá.

¿Qué puedo hacer entonces?

La clase SmtpClient nos ayudará para conseguirlo. Básicamente se trata de indicarle un par de parámetros extra para indicar el puerto a utilizar y la obligatoriedad de SSL. Lo demás lo hará esta clase por nosotros.

El siguiente código en C# ilustra un ejemplo de cómo enviar un correo de prueba a través de GMail usando una aplicación de consola:

using System;
using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;

public class EjemploCorreoGMail
{
    public static void Main()
    {
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            msg.To.Add("destinatario@dominio.com");
            msg.From = new MailAddress("micuenta@gmail.com", "Tu Nombre", System.Text.Encoding.UTF8);
            msg.Subject = "Prueba de correo a GMail";
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = "Cuerpo del mensaje";
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = false

            //Aquí es donde se hace lo especial
            SmtpClient client = new SmtpClient();
            client.Credentials = new System.Net.NetworkCredential("micuenta@gmail.com", "miclave");
            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true; //Esto es para que vaya a través de SSL que es obligatorio con GMail
            try
            {
                        client.Send(msg);
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                        Console.WriteLine(ex.Message);
                        Console.ReadLine();
            }
    }
}

 

Comparte este post:

Comentarios

# J. Babuglia said:

Buenas! Llevo un tiempo usándolo para "pruebas", así no molesto al departamento de sistemas para que me creen cuentas de correo "ficticias". Un punto interesante es que todos los correos que se envían luego están disponibles online en la carpeta "enviados" de GMail. Saludos!

Saturday, June 23, 2007 3:49 PM
# ricardo said:

buenisimo, no lo podía lograr yo pero gracias a este post lo logre...

Sunday, July 15, 2007 5:12 AM
# José Méndez said:

Como haces el Diseño para este Codigo o en que lenguaje haces el Diseño ? en Visual C++????

Thursday, July 19, 2007 5:24 AM
# Ricardo said:

Está muy bueno este post... pero quisiera saber que código debo cambiar para usarlo con cuentas de hotmail, yahoo, etc... por que cuando quiero usar dichas cuentas me muestra error (al menos la de hotmail).

Wednesday, July 25, 2007 11:29 PM
# Alfagactor said:

Para Ricardo:

Amigo ricardo solo queria decirte que debes tener pendiente que para yahoo y hotmail el uso de POP3 y SMTP es un servicio de pago por lo cual si usas este metodo con cuentas normales tendras siempre problemas ya que para los usuarios gratuitos estos servicios no estan activos. Teniendo esto pendiente y si tuvieras cuentas de pago en algunos de estos servicios solo tendrias que investigar los requerimientos para hacer la coneccion a cualquiera de estos proveedores de correo, cuando digo requerimientos me refiero a: puerto de comunicacion, si incorpora algun sistema de cifrado (SSL,etc), etc.

Monday, August 06, 2007 6:17 PM
# Miguel Ramírez said:

Para Ricardo: Yo tengo una cuenta de yahoo, y funciona perfecto el codigo de arriba.

Los servidores son:

[SSL: no.

pop.mail.yahoo.com.ar >puerto:110

smtp.mail.yahoo.com.ar >puerto:587]

[SSL:SI > los servidores son los mismos para pop el puerto es:995 y para smtp 465]

Para poder utilizar los servidores POP3 y SMTP de yahoo debes primero habilitarlos en el menú opciones desde tu cuenta de yahoo, en la opción Acceso POP3 (desde otros programas) y reenvío.

Yo probé la configuración que no requiere SSL y funciona perfectamente con el codigo de arriba.

Tuesday, August 07, 2007 7:45 PM
# DarkZoft said:

Hola!

Y para enviar mails desde el viejo VB6?

Thursday, August 09, 2007 7:22 PM
# José M. Alarcón Aguín said:

Nuestro buen amigo (y tutor de campusMVP.com) tiene la solución a lo que preguntas:

www.elguille.info/.../vbsendmail.htm

Saludos

JM.

Thursday, August 09, 2007 7:53 PM
# Fernando said:

Estoy tratando de enviar un mail a traves de esta clase pero resulta que se me produce un error al enviarlo. --> smtp.Send(correo).

Excepción del tipo 'System.Net.Mail.SmtpException' en System.dll

el mail de envio es de una cuenta de exchange

estoy usando lo siguiente:

      Dim correo As New System.Net.Mail.MailMessage

       correo.From = New System.Net.Mail.MailAddress("nombre@dominio.cl")

       correo.To.Add("nombre@gmail.com")

       correo.Subject = "correo de prueba"

       correo.Body = "esto es una prueba no contestar"

       correo.IsBodyHtml = False

       correo.Priority = System.Net.Mail.MailPriority.Normal

       Dim smtp As New System.Net.Mail.SmtpClient

       smtp.Host = "servidor .dominio.org"

       smtp.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network

       smtp.Credentials = New System.Net.NetworkCredential("minombre", "***")

       Try

           smtp.Send(correo)

           LabelError.Text = "Mensaje enviado satisfactoriamente"

       Catch ex As System.Net.Mail.SmtpException

           LabelError.Text = "ERROR: " & ex.Message

       End Try

Friday, August 10, 2007 3:43 PM
# José M. Alarcón Aguín said:

Fernando:

Ese error se produce por que no eres capaz de conectarte al servidor SMTP de envío que indicas, por lo tanto una de estas:

1) Está detrás de un cortafuegos que no permite conexiones entrantes (raro) o bien tú estás detrás de un cirtafuegos que no permite conexiones salientes. Verifícalo.

2) El servicio SMTP de Exchange está parado.

3) El puerto asignado al servidor SMTP ha sido modificado en la configuración del servidor (es perfectamente posible, hay muchos que no trabajan en el puerto estándar).

Ya nos cuentas...

JM.

Friday, August 10, 2007 5:40 PM
# Fernando said:

Bueno chekie todo lo que me dijiste y aparentemente estaba ok..

el problema se encontraba en otra parte... resulta que se me paso por alto desbloquear el antivirus que escanea el outlook, por eso no me enviaba los mail....

un error lo comete cualquiera ejejej.. gracias Jose Miguiel.

Saludos.

Friday, August 10, 2007 10:07 PM
# Javier Bonilla said:

Hola  a todos, me gustaria saber si alguno de ustedes ha probado este codigo en un servidor de correos de lotus notes, he tratado de enviar correos con todo el codigo que he visto y nada me funciona. gracias de antemano a todos.

sldos.

Friday, August 31, 2007 1:04 AM
# Maximo said:

EL codigo me funciona de maravilla querria saber si se puede enviar un gridview / dataview por mail y si no fuese posible que podria hacer

Gracias

Wednesday, September 05, 2007 3:39 PM
# CHRISTIAN said:

Muy bueno, Gracias Amigo!!

Monday, September 10, 2007 4:19 AM
# Raul said:

Por mas que he probado sigo obteniendo un "failure to send mail" como respuesta

¿Hay alguna forma de ampliar la informacion de respuesta que me ayude a encontrar la falla (por ej codigos de error del servidor gmail)?

Thursday, September 20, 2007 2:00 AM
# Path said:

Hola a todos!

Disculpen mi ignoracia, pero yo tampoco puedo enviar mensajes desde outlook con mi cuenta gmail. Donde debo pegar el código?

Muchas Gracias y Felíz día...

Thursday, September 20, 2007 6:09 PM
# Christian said:

todo funciona perfecto, lo único es q los correos HACIA cuentas de hotmail no reciben los correos :S

Es decir, no da error, simplemente nunca caen.

Thursday, September 20, 2007 7:18 PM
# gustavo said:

Excelente....

gracias

Friday, September 28, 2007 7:16 PM
# Abejita said:

Mil gracias por el post. El código me ha funcionado de maravilla, incluso puedo recibir correos en hotmail.

Un abrazo a todos!

Monday, October 01, 2007 5:09 AM
# manugarcia said:

xfavor ayuda, no consigo hacer funcionar el codigo "robado" en visual basic para mandar emails. por favor ayudenme, gracias

Saturday, October 06, 2007 9:13 PM
# dodert said:

buen ejemplo, a mi siempre me ha tirado, pero...

Ahora estoy dentro de una red privada "segura" y cuadno va a enviar el correo devuelve este error:

"El certificado remoto no es válido según el procedimiento de validación." supongo que sera por algun problema de red, vamos, la configuracion de la misma. Alguna Idea???

Gracias

Thursday, October 11, 2007 9:50 AM
# juanjo_gazzola said:

Quisiera saber el nivel de encriptacion que tiene la clase system.net.networkcredencial considerando que lo que se ingresa es texto plano. Es visible para cualquiera que navega en la web o no. Desde ya muchas gracias.

Wednesday, October 17, 2007 1:19 AM
# José M. Alarcón Aguín said:

No, no va encriptado, pero...

...en este caso, teniendo en cuenta que se está accediendo con una conexión cifrada con SSL no es un problema ya que sí van cifrados gracias a esta conexión.

Saludos

JM.

Wednesday, October 17, 2007 11:07 AM
# Mario said:

Hola,

Quería preguntar si este código me sirve para enviar correo mediante SMTP de exchange?.

Gracias.

Mario

Saturday, October 20, 2007 11:45 PM
# Gabriel said:

Excelente !!!!!!!!! despues de haber desechado la opcion y buscar alternartivas me tope con este post, excelente !!

Saturday, October 27, 2007 12:48 AM
# mmartinez said:

pues estoy intentando enviar por gmail el puerto q ocupo es 465 y el smtp es smtp.gmail.com pero no c si esta informacion esta erronea ya q no puedo enviar el correo si tienen una respuesta favor envienlo a nachojo6@yahoo.com se los agradecere y si ustedes ya lo pudieron hacer conpartan su codigo si lo decean para mi mejor tengo años de intentar esto y aun no lo he logrado con apis y demas lo unico q no quiero q se abra el outlook u otro correo para q yo le de send si no que se automatico completamente Gracias

Tuesday, October 30, 2007 10:50 PM
# carmar said:

probe el codigo y me da el siguiente mensaje

"El servidor SMTP requiere una conexion segura o el cliente no se autentico. la respuesta del servidor fue: 5.5.1  authentication required 24sm1091072wrl"  alguien sabe por qué?

Thursday, November 08, 2007 7:30 PM
# Dany said:

como puedo hacer para enviar el mismo mail por ejemplo a 10 personas al mismo tiempo, jalando los mails desde un GridView

.... osea una especial de mailing, pero desde el grid view

help me ! please

Friday, November 16, 2007 10:43 PM
# Braulio Díez said:

Muy bueno,  te ahorras tener que esperar a que los de IT te den acceso etc... lo único malo... es que al final lo acabes dejand en producción :D.

Espero que los de google no acaben capandolo.

Thursday, November 29, 2007 2:35 PM
# José M. Alarcón Aguín said:

Vitucho:

Ese error se debe a que estás intentando entregar un correo eletrónico directamente a un servidor de destino usando una IP que no está asociada correctamente al dominio de origen supuesto. Muchos servidores están configurados así para evitar el Spam. No se deben hacer envíos directos desde una IP cualquiera, sino siempre usar un servidor intermedio que tenga una IP correctamente configurada (lo cual involucra incluso al dueño de tu bloques de IP, o Netblock Owner) o te lo rechazarán muchos servidores, algunos incluso sin advertírtelo como este.

Puedes encontrar información en el apartado de Entregabilidad de nuestro blog sobre e-mail marketing:

www.theemailingexperience.com

donde tienes los artículos en inglés y castellano y yo personalmente publico muchas cosas.

Saludos

JM

Thursday, December 20, 2007 10:12 PM
# Vitucho said:

Gracias por tu respuesta ya estoy como mas centrado, porq al principio no tenía norte. Bueno otra inquietud, hay q realizar alguna configuración adicional, es decir algo como darle permisos al CDO(q está en el registro de windows). O talvés configurar un smtp virtual en el IIS, o solo depende ya de la configuración de los dominios del smtp. Ah otra cosa el smtp no requiere autenticación.

De antemano muchas gracias.

Friday, December 21, 2007 4:39 PM
# Ciro8 said:

Quisiera mandar correos mediante el codigo en la parte superior pero sin tener que ingresar la contraseña de mi codigo.

Thursday, January 24, 2008 5:18 PM
# Manuel said:

Buenisimo, pensaba utilizar el api de outlook, pero esto me viene al pelo.

Saturday, February 02, 2008 7:49 PM
# Emma said:

Yo uso desde hace tiempo Outlook para gestionar mis correos. Mis cuentas son todas de gmail. Hasta ahora me ha funcionado perfectamente, sin problemas. Pero hace poco formateé mi PC y reinstalé todo; configuré mis cuentas de gmail en el Outlook, como siempre y... ¡sorpresa!, recibo todos los correos de todas las cuentas pero no puedo enviar. El error que me sale es:

"La tarea 'Enviando xxxxx' ha notificado el error (0x8004210B) : 'La operación ha agotado el tiempo esperando una respuesta del servidor de envío (SMTP). Si sigue recibiendo este mensaje, póngase en contacto con el administrador del servidor o con el proveedor de servicios de Internet (ISP)."

Sólamente me puedo enviar correos a mí misma desde las cuentas de gmail que tengo configuradas en mi propio equipo.

Cuando clico sobre la acción "Probar configuración de la cuenta...", me sale que envía y recibe perfectamente, pero... enviar, no envía nada.

Esto no me ha pasado nunca. ¿Qué puedo hacer?

Sunday, February 03, 2008 5:25 PM
# Emma said:

Lo había olvidado: la versión de Outlook que uso es la más reciente, la de 2007

Sunday, February 03, 2008 5:29 PM
# José M. Alarcón Aguín said:

¿Te has fijado en que el puerto que debes usar no es el normal (el 21) si no el 587?

Cambia el puerto en las propiedades avanzadas y a ver si es de eso...

Saludos

JM

Sunday, February 03, 2008 6:38 PM
# Emma said:

No, no es eso, de todos modos muchas gracias.

De hecho, en la web de gmail, en las instrucciones que se dan para configurar el correo pop es que se utilice el puerto 465 para el servidor de salida, y así lo he hecho siempre, lo he cambiado y me ha funcionado sin problemas. Pero esta vez no va. No sé por qué.

Monday, February 04, 2008 12:34 PM
# José M. Alarcón Aguín said:

Hola espinete:

Bueno, realmente no deberías hacer eso de esa forma ya que para acceder a la cuenta de correo (o cualquier otro servicio que requiera autenticación) deberías pedirle la clave al usuario (con un diálogo) y luego, si tal, guardarla en algún sitio para su reutilizanción, en cuyo caso sí tendrías que encriptarla.

Un programa con la clave metida "a pelo" sería muy poco flexible ante cualquier cambio ¿no crees?. Fíjate en como hace Outlook: primero te la pide y si quieres marcas lo de "Recordar mis credenciales".

Si es un programa desatendido tres cuartos de lo mismo: la primera vez al menos o durante una configuración previa deberías pedirle las credenciales.

Luego para guardarlas yo usaría en mi código almacenamiento aislado y cifrado de archivos con DPAPI, como se describe en mi curso de "Técnicas de Escritura de Código seguro" de campusMVP (www.campusmvp.com/.../Cursos_On-Line.htm).

Saludos :-)

JM.

Wednesday, March 12, 2008 5:49 PM
# JOSE ECHEVERRIA said:

QUIEREN USAR UN SMTP SIN AUTENTICACION  100% CONFIRMADO ESTA ES LA DIRECCION:  mail.cantv.net se las recomiendo...

Sunday, March 16, 2008 1:20 PM
# José M. Alarcón Aguín said:

Ojito con este tipo de pasarelas que permiten hacer "rely". Generalmente están metidas en toda clase de listas negras precisamente porque la spueden usar los spammers, y luego los correos no van a entrar en ningún lado.

Mi consejo: no las useis.

Saludos

JM.

Monday, March 17, 2008 8:14 PM
# Jon Wave said:

como puedo agregar la referencia system.net.mail ya que al generarlo me da error.Gracias de antemano

Thursday, March 20, 2008 11:47 AM
# William said:

Como puedo enviar de una cuenta cualquiera a otra utilizando un dominio q no sea el de gmail. x fa ayudenme con eso....

Tuesday, April 08, 2008 4:56 PM
# Sara said:

Como se hace para recibir mensajes???

Como una bandeja de entrada o algo similar...

Muchas Gracias

y muy bueno el blog   :)

Wednesday, April 23, 2008 10:42 PM
# Rachel said:

Quisiera saber  en vb.net o en c# me da igual, como comprobar si el mensaje enviado ha sido leido.

Estoy buscando dicha información por internet pero no la encuentro.

Alguien sabe si esto es posible? Y como puedo llegar a conseguirlo?

Gracias.

Tuesday, May 27, 2008 4:46 PM
# Alumnos de informatica said:

Eres el *** amo!!!!!  el codigo muy bueno ^^ , gracias a eso probablemente no tenemos que hacer un examen, y tendremos la asignatura muy bien aprobada!!!!!!!!!!!!

Wednesday, May 28, 2008 2:23 PM
# Hades said:

salu2, a todos.

Al igual que dodert tengo ese mismo problema, porfa si tiene una idea de como se soluciona:

"AuthenticationException: The remote certificate is invalid according to the validation procedure."

me sería muy util.

Tuesday, June 03, 2008 6:10 PM
# Hades said:

Rachel reviza en este link que hay mucho ejemplo a ver si te resuelve.

www.example-code.com/.../smtp.asp

Salu2, Hades.

Wednesday, June 04, 2008 5:28 PM
# Blanca said:

Gracias por el codigo, realmente funciona, ya llevaba variso dias buscando algo parecido.

Saludos

Saturday, June 07, 2008 6:30 PM
# JUajaja said:

SOy unmh mierda no sirvo para la programacion

Friday, June 13, 2008 11:41 PM
# Sergio said:

Hola a todos.

Estoy utilizando la clase System.Net.Mail para mandar un correo al zetafax por medio del exchange, que mandándolo con ciertos requerimientos hace que te mande por fax el correo y sus adjuntos.

El problema que tengo es que a los del exchange se les ocurrió la brillante idea de que para que entendiera que un mail es para el zetafax, el formato del From debía ser contacto_destino@empresa_destino@numero_fax, y claro cuando hago:

MailAdress from = new MailAdress (contacto_destino@empresa_destino@numero_fax)

Da un error de que la dirección no tiene un formato válido.

Mi pregunta es: ¿Se puede deshabilitar de alguna forma la comprobación de la dirección de correo?

Muchas gracias.

Monday, June 16, 2008 10:57 AM
# José M. Alarcón Aguín said:

Sergio:

Mucho me temo que no vas a poder evitar esa excepción. La validación se hace muy abajo en la jerarquía. Para la validación se usa el método ParseValue de la clase MailAddress, el cual hace uso de la clase internaMailBfnHelper de System.Net.Mime y es la que provoca la excepción al hacer el análisis de la cadena.

Que yo sepa no hay ningún mecanismo que impida esta comprobación. Y es que realmente un email con dos arrobas no es una dirección válida.

Menudo fallo el de ZetaFax. Ben podían haber usado otro tipo de separaddor válido, como por ejemplo un doble punto o algo así :-(

Suerte

JM

Monday, June 16, 2008 9:56 PM
# Oscar Fernando said:

Buen dia estoy ocupando este codigo en mi maquino donde desarrollo me funciona muy bien es mas lo instalo en el IIS de esta maquina y funciona pero lo pongo en un servidor de pruebas que tiene windows xp y no funciona no envi ale correo saludo no le he encontrado ya se formateo el equipo pensando que pudiera ser alguna configuracion el usuario del IIS debe tener algun permiso especial? gracias

Tuesday, June 17, 2008 12:46 AM
# Monik said:

Estoy usando System.Net.Mail para enviar unn correo, pero tengo un problema de envío: Resulta que tengo dos destinatarios con dominios diferentes, el destinatario1 que tiene un dominio gestionado por exchange y el destinatario2 que es de gmail. Al enviar el mail el destinatario2 recibe el mail sin problemas, sin embargo el destinatario1 que es la cuenta gestionada por exchange  no recibe abstolutamente nada. Durante el envío no se genera ningun error.

El codigo es el siguente :

Private Sub enviar()

       Dim mail As New System.Net.Mail.MailMessage

       mail.To.Add("destinatario1@dominio.com")

       mail.To.Add("destinatario2@gmail.com")

       mail.From = New Mail.MailAddress("cuenta_x@dominio.com")

       mail.Subject = "Asunto"

       mail.Body = "Contenido del mensaje"

       mail.IsBodyHtml = False

       mail.Priority = MailPriority.High

       Dim client As New SmtpClient()

       client.Credentials = New System.Net.NetworkCredential("cuenta_x@dominio.com", "password")

       client.Host = "IP Host"

       client.DeliveryMethod = SmtpDeliveryMethod.Network

       client.Port = 25

       Try

           client.Send(mail)

           MsgBox("Mensaje enviado satisfactoriamente")

       Catch ex As Exception

           MsgBox("ERROR: " & ex.Message)

       End Try

End Sub

Quisiera que ayuden para resolver este problema.

Friday, June 20, 2008 10:13 PM
# Starriillo said:

como seria para hotmail ?? =S

Wednesday, July 02, 2008 12:57 AM
# magdalena said:

esta muy bueno nos sirvio para

una tarea bkn

chaiuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

Monday, August 04, 2008 4:59 PM
# José M. Alarcón Aguín said:

Hola

Lo siento pero con eso no tep uedo ayudar. No programo PHP ni uso Blogger. Además lo que mandas es código de cliente, no de servidor que es en donde se produce el envío del correo.

Un Script sendmail.php o senddata.php como el que tienes tú aparentemente, es muy fácil de usar. Tu hoster debería darte instrucciones.

Saludos

JM

Friday, August 29, 2008 9:19 AM
# Sergio said:

Hola amigo.

Tengo una cuenta en Gmail y tengo un grupo de 377 contactos, pasa que cuando mando un mail a este grupo no llega ninguno, me vuleven todos como "Mail Delivery Subsystem", puse varias cuentas mias entre esas 377 y no me llega ninguno de los mails que mando.

Me podrias decir que estoy haciendo mal.

Tuesday, September 02, 2008 5:45 PM
# paola núñez said:

hola he visto este post el cual está muy bueno pero me gustaría saber si alguien puede ayudarme u orientarme porque no se como empezar, debo realizar una aplicación en c# que haga lo contrario, es decir necesito saber como lo puedo hacer para capturar los correo directamente desde el servidor exchange, sin pasar por un programa como el outlock, por lo tanto no me sirve la libreria Microsoft.Office.Interop.Outlook

por favor si alguien puede ayudarme se lo agradecería

Wednesday, September 03, 2008 5:32 PM
# Xhinodread said:

WENA VIEJO TE FELICITO, ESTO ES LO QUE ESTABA BUSCANDO...

Wednesday, September 24, 2008 11:45 PM
# Sandra said:

Hola!!!!,

El codigo esta muy bien y funciona!!! :D Pero me gustaria saber si existe alguna forma de mirar los correos que existan en el buzón de entrada.

Un saludo y gracias!!!

Friday, October 31, 2008 1:15 PM
# Rafael Arce Rojo said:

Se me ha ocurrido una idea estupenda, con ese te codigo puedo hace SPAM, si lo pongo en un bucle, es posible esto ???? y claro teniendo  en una base de datos los correos electronicos,

Thursday, November 20, 2008 2:41 AM
# Luis said:

Gracias por el Codigo funciona muy bien,....XD

Mmmm. esa idea del SPAM me parece buena, habria que probar, si alguien lo hace que lo comente

Saludos

Thursday, December 18, 2008 5:11 PM
# José M. Alarcón Aguín said:

La idea del spam es una cosa que ni te plantees. GMail al igual que otros proveedores de este estilo, limita lo qu epuedes hacer de esta manera, si no me nudo cachondeo.

Ah, y que no me entere yo de que en mi blog hay spammers ;-), que ya sabéis lo que opino al respecto dedicándonos en Krasis al email Marketing :-((

www.theemailingexperience.com/.../CategoryView,category,Spam.aspx

Salud2

JM

Thursday, December 18, 2008 6:23 PM
# juan said:

hola que tal mi problema es  lo contrario lo que se escribe aca. quiero recibir mis correo

el codigo que contengo es el siguiente. quisiera saber que mas me falta

 Shared Sub Receive()

       Dim pop3 As New Pop3

       pop3.User = "lesnikowski"                   ' Set user name and password

       pop3.Password = "password"

       Try

           pop3.Connect("mail.host.com")           ' Connect to server and login

           If (pop3.HasTimeStamp = True) Then      ' Try APOP secure login

               pop3.APOPLogin()

           Else

               pop3.Login()

           End If

           pop3.GetAccountStat()                   ' Get account statistics

           For i As Integer = 1 To pop3.MessageCount

               Try

                   ' Receive email

                   ' Use MailMessage class to get real mail structure or

                   ' SimpleMailMessage to get simple interface.

                   Dim builder As New SimpleMailMessageBuilder()

                   Dim simpleMail As ISimpleMailMessage

                   simpleMail = builder.CreateFromEml(pop3.GetMessage(i))

                   Console.WriteLine("-- email {0} --", i)

                   ' Write out email's subject

                   Console.WriteLine(simpleMail.Subject)

                   ' Write out email's from.

                   Dim mb As MailBox

                   For Each mb In simpleMail.From

                       ' Write out name, if it was provided and address

                       Console.WriteLine("From: {0}<{1}>", mb.Name, mb.Address)

                   Next mb

                   ' Write out email's body.

                   If (simpleMail.HtmlData Is Nothing) Then

                       Console.WriteLine(simpleMail.HtmlDataString)   ' HTML email

                   Else

                       Console.WriteLine(simpleMail.TextDataString)   ' Text email

                   End If

                   ' Write out Attachments

                   Dim attachment As MimeData

                   For Each attachment In simpleMail.Attachments

                       Console.WriteLine(attachment.FileName)

                       ' Save attachment to disk

                       attachment.Save("c:\" + attachment.FileName)

                   Next attachment

                   ' pop3.DeleteMessage(i)    ' Delete message from POP3 server

               Catch ex As MailException

                   Console.WriteLine(ex.Message)   ' Invalid email format

               End Try

           Next

       Catch ex As ServerException

           Console.WriteLine(ex.Message)           ' Server error

       Finally

           pop3.Close(False)                       ' Close connection

       End Try

   End Sub

End Class

Wednesday, January 07, 2009 4:56 PM
# Aldo Saúl said:

Hola José!

Estoy desarrollando una aplicación web con Visual  Studio 2003, la cual tiene un proceso que envia mails a las direcciones de correo que le escriba en un TextBox. El proceso usa la clase SmtpMail para enviarlo a traves del SmtpServer 127.0.0.1. La mayoria de los destinatarios reciben su correo sin problemas, excepto los de Hotmail y Yahoo. ¿Hay alguna forma en la cual pueda asegurar desde la aplicacion que llegarán los correos a estos clientes?

Saludos y gracias por la ayuda.

Aldo Saúl

Monday, February 09, 2009 11:49 PM
# José M. Alarcón Aguín said:

Dentro del envío de correo hay una disciplina complicada que se llama entregabilidad (www.theemailingexperience.com/.../CategoryView,category,Entregabilidad.aspx) y que tiene en cuenta todos los factores que son necesarios para entregar un correo. En tre ellos se ecuentra, aparte delpropio contenido, la forma en la que está definida la propia infraestructura de la red que envía, la reputación de la IP que envía, los métodos de firma o autenticación del remitente, etc...

Mucha gente se piensa que enviar correo es poco más que conectarse por el puerto 25 a un servidor e intentar entregar, pero hay mucho, mucho más.

Hotmail y compañía dada la gran cantidad de correos que reciben tienen muchos controles para lo que se les envía y puede ser cualquiera de esos controles lo que impide que se entreguen.

Puedes obtener información específica para Hotmail aquí: http://postmaster.live.com/

Saludos

JM

Tuesday, February 10, 2009 8:59 AM
# Jose M. Flores said:

Buenos dias Jose M. Alarcón.

Tengo un problema, yo el codigo que tengo es el siguiente:

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

       Dim _SMTP As New System.Net.Mail.SmtpClient

       'CONFIGURACIÓN DEL STMP

       '_SMTP.Credentials = New System.Net.NetworkCredential("cuenta de gmail", "contraseña de la cuenta")

       '_SMTP.Host = "smtp.gmail.com"

       '_SMTP.Port = 465

       '_SMTP.EnableSsl = True

             ' CONFIGURACION DEL MENSAJE

       _Message.[To].Add("XXX") 'Cuenta de Correo al que se le quiere enviar el e-mail

       _Message.From = New System.Net.Mail.MailAddress("XXXX", "XXX", System.Text.Encoding.UTF8) 'Quien lo envía

       _Message.Subject = "prueba" 'Sujeto del e-mail

       _Message.SubjectEncoding = System.Text.Encoding.UTF8 'Codificacion

       _Message.Body = "esto es una prueba" 'contenido del mail

       _Message.BodyEncoding = System.Text.Encoding.UTF8

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

       _Message.IsBodyHtml = False

       ' ADICION DE DATOS ADJUNTOS

       'Dim _File As String = My.Application.Info.DirectoryPath & "archivo" 'archivo que se quiere adjuntar

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

       '_Message.Attachments.Add(_Attachment)

       'ENVIO

       Try

           _SMTP.Send(_Message)

       Catch ex As System.Net.Mail.SmtpException

           '   MessageBox.Show(ex.ToString)

       End Try

Haciendo un telnet a gmail con el puerto consigo conectarme, pero cuando ejecuto el codigo me sale el siguiente error:

Se excedió el tiempo de espera de la operación.

Es decir, no consigo enviar el mail...

A ver si me puedes echar una mano, ya que nos estamos volviendo locos y no conseguimos averiguarlo.

Un saludo y muchas gracias de antemano.

Wednesday, February 18, 2009 11:53 AM
# Ricardo Montecino said:

El codigo funciona de maravilla, pero queria preguntarles algo que me esta pasando con GMAIL. Resulta que cada cierto tiempo (y no se cual es la causa). el correo de GMAIL que uso para enviar los correos me pide autentificacion extra, es decir aparte del password necesito ingresar las letras de una imagen.

bueno, esto hace que los correos que deben ser enviados a traves de esa cuenta no se envien y hay que logearse manualmente para que sigua funcionando. Si alguien sabe porque pasa esto y si tiene una solucion se los agradecere mucho.

de antemano muchas gracias, saludos

Thursday, March 05, 2009 9:40 PM
# vgt said:

don José M. Alarcón Aguín, es usted un dios !!!

Monday, March 16, 2009 12:52 PM
# Cristina said:

Hola!

Me sale el siguiente error:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\xampp\htdocs\Proyecto web\class.smtp.php on line 122

Error: Language string failed to load: connect_host

Alguien podría ayudarme???

Mi email es: cristinita_delrio@yahoo.es

Gracias!!

Thursday, May 21, 2009 12:03 PM
# luis said:

una vesz tube una cuenta con gmail, no me gusto

Friday, June 26, 2009 5:37 PM
# uulong said:

Hola, tengo el siguiente problema a la hora de enviar un correo desde gmail usando un programa hecho en C#.

El problema es que la cuenta que uso para la credencial es la que se muestra en el From cuando el mensaje es enviado, en vez de ser el From verdadero del mensaje.

Espero puedan ayudarme, gracias.

Saturday, October 10, 2009 1:54 AM
# Enmanuel said:

Primero Gracias Por Tu Apoyo Y Segundo Tengo Un Problema Me Da Un Error "El certificado remoto no es válido según el procedimiento de validación." Por Favor E Podrias Ayudar?????

Friday, November 20, 2009 10:07 PM
# Israel Valadez said:

Ing. José m. Alarcón:

Hay alguna opcion de degradar este código a VS 2003 ya que la clase Net.Mail es nueva en 2.0 y estas opciones no se si están disponibles en .Net Framework 1.xxx o si hay alguna clase parecida.

Muchas gracias de antemano.

Tuesday, December 01, 2009 10:43 PM
# Alberto gaona said:

Para los que tienen problemas con el certificado remoto (p.e. "El certificado remoto no es válido según el procedimiento de validación"):

Tiene que decirle a la conexión hacia el servidor que NO les interesa verificar el contenido del certificado de gmail. Para ello, inserten las siguientes líneas ANTES de la llamada al send():

           ServicePointManager.ServerCertificateValidationCallback =

               delegate(object s

                   , X509Certificate certificate

                   , X509Chain chain

                   , SslPolicyErrors sslPolicyErrors)

               { return true; };

Wednesday, December 02, 2009 12:54 AM
# JM said:

¿Como convierto este codigo a C++?

Gracias

JM

Thursday, February 04, 2010 7:24 PM
# ing enciso0 said:

ho0la!! my bueno0 su pro0grama muy co0mpleto0  pero para yahoo so0lo0 funcio0na si tienes una cuanta premiun creo0 no0 se si me puedan informar ko0mo0 le puedo0 hacer para hacerlo0 funcio0nar en yaho0 po0rfas..

Monday, February 22, 2010 12:06 AM
# Israel Barragan said:

Gracias gracias a este post he logrado mandar el correo muchas gracias

Monday, March 22, 2010 12:14 AM
# jonas said:

He probado varias veces..y me sale

failure sending mail...

me conecto a internet con una banda ancha movil..

desinstale el anti virus Mcafee..

y me sigue saliendo lo mismo..

con credencial

cuenta :

smtp.yahoo.com.ar

que sera?,por favor ayuda...

port :465

Thursday, March 25, 2010 4:36 PM
# SergioTarrillo - RichWeblog said:

Internet Explorer 6, es una de esas piedritas por la que a veces uno tiene que pensar, ¿damos soporte

Tuesday, April 27, 2010 7:51 PM
# Germansn said:

yo qiero hacer lo mismo pero para correo outlook, probe enviar a cuentas en hotmial y gmail y llegan bien pero en outlook me llegan los mensajes a la casilla de correo no deseado

alguna data?

Thursday, April 29, 2010 4:22 PM
# Luis said:

Aqui otro ejemplo

angelestradamx.brinkster.net/cgato13.html

Tuesday, May 25, 2010 5:43 PM
# godisimo said:

Gracias me fue de utilidad MyCertValidationCb

Friday, June 04, 2010 1:39 AM
# El hombre de blanco said:

todo bienm, pero si quiero mandar un correo desde mi cuenta de yahoo.com.mx como le hago??

Thursday, June 24, 2010 11:57 PM
# dalia said:

GRaciasssssssssssssssssssss

Thursday, July 22, 2010 11:47 AM
# Conhita said:

Os agradecería que me informaran cómo enviar correo de forma que a la recepción pueda visualizar el texto sin necesidad de ir a un archivo para abrirlo. Me explico, quiero enviar un texto en pdf abierto, para que se vea sin abrirlo, y luego adjuntar otros dos pero me comunican que se recibe en tres archivos adjuntos, en el formato que lo envío. Yo en el mac lo recibo tal como lo envío, uno abierto, el que yo quiero que se vea así,  y otros dos adjuntos en pdf,.... (espero haberme explicado para que se me entienda)

Muchas gracias...

Saturday, August 28, 2010 10:53 AM
# Diego said:

...Excelente Aporte, me funcionó al 100% muhas gracias..Saludos

Wednesday, September 15, 2010 11:46 AM
# <Jose A. Fernandez /> said:

Para enviar email a través de los servidores de Google (o Google App) o de desde Hotmail/Live.com es

Thursday, October 07, 2010 5:13 PM
# Paola said:

Muchas gracias!

Me sirvió de mucho el código!

Saludos

Friday, February 11, 2011 4:53 PM
# Jhav said:

Quisiera sabar si este mismo codigo puede utilizarse para enviar correos desde una cuenta de un proveedor de hosting. Muchas gracias.

Wednesday, March 30, 2011 1:42 AM
# MarioF said:

Ojala pudieran ayudarme en esto, tengo un aplicacion web en asp.net necesito que desde un webform con mi servidor y mi SMTP propio de mi servidor pueda enviar correos hacia una cuenta externa en Gmail

gracias por su ayuda

Tuesday, April 05, 2011 3:07 AM
# lupita said:

esta bien pr no entiendoooooooooooooooooooooooooooooooooooooooooooooo

Friday, June 24, 2011 1:04 AM
# MAuricio said:

Muchas gracias por la informacion te pasaste muy clara la informacion.funciono de maravilla

Wednesday, August 10, 2011 11:42 PM
# Ramiro said:

Muy bueno, claro y conciso. Anda muy bien. Saludos.

Wednesday, August 24, 2011 9:44 PM