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();
            }
    }
}


 

Sin categoría

96 thoughts on “Cómo enviar correo electrónico por código usando cuentas de GMail

  1. 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!

  2. 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).

  3. 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.

  4. 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.

  5. 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

  6. 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.

  7. 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.

  8. 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.

  9. 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)?

  10. 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…

  11. 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

  12. 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.

  13. 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.

  14. 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

  15. 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é?

  16. 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

  17. 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.

  18. 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

  19. 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.

  20. 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?

  21. ¿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

  22. 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é.

  23. 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.

  24. 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.

  25. 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.

  26. 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!!!!!!!!!!!!

  27. 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.

  28. 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.

  29. 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

  30. 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

  31. 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.

  32. 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

  33. 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.

  34. 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

  35. 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!!!

  36. 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,

  37. 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

  38. 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

  39. 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

  40. 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.

  41. 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

  42. 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!!

  43. 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.

  44. 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?????

  45. 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.

  46. 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; };

  47. 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..

  48. 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

  49. 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?

  50. 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…

  51. 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

  52. 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

  53. 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

Responder a Octavius Cancelar respuesta

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