2010-11-30 20 views
5

Duplicar posibles:
Sending email through Gmail SMTP server with C#¿Cómo se envía C# con el servidor SMTP de Gmail?

Por correo con C# y utilizar el servidor SMTP de Gmail es que hay algún tipo de cosa difícil que debemos hacer? Porque después de muchas búsquedas encontré algunas formas de hacerlo, pero como resultado obtuve una excepción de falla. Supongo que es porque no manejo TSL para Gmail (porque funciona con TSL), pero no sé cómo manejar TSL con C# para hacer esto. Realmente aprecio cualquier ayuda o enlace a una muestra útil. Aquí está mi código:

public string SendMail(string senderMail, string receiverMail, string attachmentPath) 
{ 
    var fromMailAddress = new MailAddress(senderMail); 
    var toMailAddress = new MailAddress(receiverMail); 

    MailMessage mailMessage = new MailMessage(fromMailAddress, toMailAddress); 
    mailMessage.Subject = "My Subject"; 
    mailMessage.Body = "This is the body of this message for testing purposes"; 

    Attachment attachFile = new Attachment(attachmentPath); 
    mailMessage.Attachments.Add(attachFile); 

    SmtpClient emailClient = new SmtpClient(); 

    NetworkCredential credential = new NetworkCredential(); 
    credential.UserName = fromMailAddress.User; 
    credential.Password = "password"; 

    emailClient.Credentials = credential; 
    emailClient.Port = 587; 
    emailClient.Host = "smtp.gmail.com"; 

    //emailClient.EnableSsl = true; //Here should be for TSL, but how? 

    emailClient.Send(mailMessage); 
} 
+0

¡déjalo preguntar! : P – Seva

+0

Bienvenido a SO! Esta es una buena pregunta y adjuntó el código correcto. Sin embargo, se hizo una pregunta similar antes, vea el enlace de arriba. Podría ser que estás encontrando una excepción especial; en ese caso, las personas pueden ayudarlo mejor si publica el mensaje exacto de su excepción. – Marijn

+0

Usaste la palabra "TSL" tres veces, pero no sé qué es eso. ¿Quisiste decir "TLS"? – Gabe

Respuesta

1

Debe decir el mensaje de la excepción. Pero sí, elimine el comentario de que emailClient.EnableSsl = true; Si aún no funciona, su firewall o enrutador está bloqueando los puertos.

5

Pruebe el siguiente código. Este es el código de trabajo que he estado usando durante mucho tiempo.

// Configure mail client (may need additional 
    // code for authenticated SMTP servers). 
    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 

    // Set the network credentials. 
    mailClient.Credentials = new NetworkCredential("[email protected]", "YourGmailPassword"); 

    //Enable SSL. 
    mailClient.EnableSsl = true; 

    // Create the mail message (from, to, subject, body). 
    MailMessage mailMessage = new MailMessage(); 
    mailMessage.From = new MailAddress("[email protected]"); 
    mailMessage.To.Add(to); 

    mailMessage.Subject = subject; 
    mailMessage.Body = body; 
    mailMessage.IsBodyHtml = isBodyHtml; 
    mailMessage.Priority = mailPriority; 

    // Send the mail. 
    mailClient.Send(mailMessage); 

Referencia: Sending Email using a Gmail Account.

+0

muchas gracias, funciona perfectamente. Casi quería instalar IIS y SMTP manual para manejar este problema, pero ahora puedo usar GMail perfectamente, muchas gracias. – Sam

Cuestiones relacionadas