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();
}
}
}
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!
buenisimo, no lo podía lograr yo pero gracias a este post lo logre…
Como haces el Diseño para este Codigo o en que lenguaje haces el Diseño ? en Visual C++????
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).
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.
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.
Hola!
Y para enviar mails desde el viejo VB6?
Nuestro buen amigo (y tutor de campusMVP.com) tiene la solución a lo que preguntas:
http://www.elguille.info/VB/ejemplos/vbsendmail.htm
Saludos
JM.
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
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.
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.
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.
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
Muy bueno, Gracias Amigo!!
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)?
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…
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.
Excelente….
gracias
Mil gracias por el post. El código me ha funcionado de maravilla, incluso puedo recibir correos en hotmail.
Un abrazo a todos!
xfavor ayuda, no consigo hacer funcionar el codigo «robado» en visual basic para mandar emails. por favor ayudenme, gracias
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
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.
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.
Hola,
Quería preguntar si este código me sirve para enviar correo mediante SMTP de exchange?.
Gracias.
Mario
Excelente !!!!!!!!! despues de haber desechado la opcion y buscar alternartivas me tope con este post, excelente !!
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
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é?
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
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.
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:
http://www.theemailingexperience.com
donde tienes los artículos en inglés y castellano y yo personalmente publico muchas cosas.
Saludos
JM
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.
Quisiera mandar correos mediante el codigo en la parte superior pero sin tener que ingresar la contraseña de mi codigo.
Buenisimo, pensaba utilizar el api de outlook, pero esto me viene al pelo.
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?
Lo había olvidado: la versión de Outlook que uso es la más reciente, la de 2007
¿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
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é.
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 (http://www.campusmvp.com/CampusMVP/Cursos_On-Line.htm).
Saludos 🙂
JM.
QUIEREN USAR UN SMTP SIN AUTENTICACION 100% CONFIRMADO ESTA ES LA DIRECCION: mail.cantv.net se las recomiendo…
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.
como puedo agregar la referencia system.net.mail ya que al generarlo me da error.Gracias de antemano
Como puedo enviar de una cuenta cualquiera a otra utilizando un dominio q no sea el de gmail. x fa ayudenme con eso….
Como se hace para recibir mensajes???
Como una bandeja de entrada o algo similar…
Muchas Gracias
y muy bueno el blog 🙂
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.
Eres el puto amo!!!!! el codigo muy bueno ^^ , gracias a eso probablemente no tenemos que hacer un examen, y tendremos la asignatura muy bien aprobada!!!!!!!!!!!!
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.
Rachel reviza en este link que hay mucho ejemplo a ver si te resuelve.
http://www.example-code.com/csharp/smtp.asp
Salu2, Hades.
Gracias por el codigo, realmente funciona, ya llevaba variso dias buscando algo parecido.
Saludos
SOy unmh mierda no sirvo para la programacion
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.
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
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
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.
como seria para hotmail ?? =S
esta muy bueno nos sirvio para
una tarea bkn
chaiuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
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
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.
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
WENA VIEJO TE FELICITO, ESTO ES LO QUE ESTABA BUSCANDO…
Hola!!!!,
El codigo esta muy bien y funciona!!! 😀 Pero me gustaria saber si existe alguna forma de mirar los correos que existan en el buzón de entrada.
Un saludo y gracias!!!
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,
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
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 :-((
http://www.theemailingexperience.com/ES/CategoryView,category,Spam.aspx
Salud2
JM
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
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
Dentro del envío de correo hay una disciplina complicada que se llama entregabilidad (http://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
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.
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
don José M. Alarcón Aguín, es usted un dios !!!
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:xampphtdocsProyecto webclass.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!!
una vesz tube una cuenta con gmail, no me gusto
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.
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?????
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.
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; };
¿Como convierto este codigo a C++?
Gracias
JM
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..
Gracias gracias a este post he logrado mandar el correo muchas gracias
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
Internet Explorer 6, es una de esas piedritas por la que a veces uno tiene que pensar, ¿damos soporte
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?
Aqui otro ejemplo
http://angelestradamx.brinkster.net/cgato13.html
Gracias me fue de utilidad MyCertValidationCb
todo bienm, pero si quiero mandar un correo desde mi cuenta de yahoo.com.mx como le hago??
GRaciasssssssssssssssssssss
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…
…Excelente Aporte, me funcionó al 100% muhas gracias..Saludos
Para enviar email a través de los servidores de Google (o Google App) o de desde Hotmail/Live.com es
Muchas gracias!
Me sirvió de mucho el código!
Saludos
Quisiera sabar si este mismo codigo puede utilizarse para enviar correos desde una cuenta de un proveedor de hosting. Muchas gracias.
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
esta bien pr no entiendoooooooooooooooooooooooooooooooooooooooooooooo
Muchas gracias por la informacion te pasaste muy clara la informacion.funciono de maravilla
Muy bueno, claro y conciso. Anda muy bien. Saludos.
el código bien pero como le puedo hacer para que en el cuerpo del mensaje pueda enviar los textos de varios controles, como textbox o labels yo lo hago asi pero me arroja errores:
mail.Body = Nombre.SelectedValue + ApellidoP.SelectedValue + vbCr + ApellidoM.SelectedValue + vbCr + Serie.SelectedValue + vbCr + Modelo.SelectedValue
lo desarrolle asi en visual studio 2010 y todo bien pero como seria ahora en VS 2013
Tengo este código y envío perfectamente a de un correo de smtp.live.com a cualquier otro correo. pero de smtp.gmail.com ne marca el error 5.1 1, que puedo hacer para checar si mi pc está libre para enviar correos de gmail?
—————————————————————————————————-
Private Sub ENVIAR_MAIL()
Dim insMail As New MailMessage
With insMail
.To.Add(«correo@hotmail.com») ‘<—– correo hotmail.com
.Subject = "asunto prueba"
.IsBodyHtml = True
.Body = "mensaje"
.From = New MailAddress("correo@gmail.com") '<—– correo gmail.com
End With
Dim smtp As New System.Net.Mail.SmtpClient
smtp.Host = "smtp.gmail.com"
smtp.Port = 587
smtp.UseDefaultCredentials = False
smtp.DeliveryMethod = SmtpDeliveryMethod.Network
smtp.Credentials = New System.Net.NetworkCredential("correo@gmail.com", "contraseña")
smtp.EnableSsl = True
smtp.Send(insMail)
End Sub