Pregunta Envío de correo electrónico en .NET a través de Gmail


En lugar de depender de mi host para enviar un correo electrónico, estaba pensando en enviar los mensajes de correo electrónico usando mi cuenta de Gmail. Los correos electrónicos son correos electrónicos personalizados para las bandas que toco en mi show. Es posible de hacer?


754
2017-08-28 13:28


origen


Respuestas:


Asegúrate de usar System.Net.Mail, no el obsoleto System.Web.Mail. Hacer SSL con System.Web.Mail es un gran desastre de extensiones hacky.

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

956
2017-08-28 14:08



La respuesta anterior no funciona. Tienes que establecer DeliveryMethod = SmtpDeliveryMethod.Network o volverá con un "el cliente no fue autenticado"error. También siempre es una buena idea poner un tiempo de espera.

Código revisado:

using System.Net.Mail;
using System.Net;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

138
2018-01-28 22:01



Para que las otras respuestas funcionen "desde un servidor" primero Activar el acceso para aplicaciones menos seguras en la cuenta de gmail

Parece que Google recientemente cambió su política de seguridad. La respuesta mejor calificada ya no funciona, hasta que cambie la configuración de su cuenta como se describe aquí: https://support.google.com/accounts/answer/6010255?hl=en-GBenter image description here

enter image description here

A partir de marzo de 2016, google cambió la ubicación de configuración nuevamente.


71
2017-09-08 12:09



http://www.systemnetmail.com/ es probablemente el sitio más absurdamente completo dedicado a un soltero Espacio de nombres de .NET ... pero tiene TODO lo que puede querer saber sobre el envío de correo a través de .NET, ya sea ASP.NET o escritorio.

http://www.systemwebmail.com/ era la URL original en la publicación, pero no debería usarse para .NET 2.0 y versiones posteriores.


64
2017-08-28 13:36



Esto es para enviar correos electrónicos con adjunto. Simple y corto ...

fuente: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html

using System.Net;
using System.Net.Mail;

public void email_send()
{
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    mail.From = new MailAddress("your mail@gmail.com");
    mail.To.Add("to_mail@gmail.com");
    mail.Subject = "Test Mail - 1";
    mail.Body = "mail with attachment";

    System.Net.Mail.Attachment attachment;
    attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
    mail.Attachments.Add(attachment);

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);

}

38
2018-05-28 12:41



Google puede bloquear los intentos de inicio de sesión de algunas aplicaciones o dispositivos que no usan los estándares de seguridad modernos. Dado que estas aplicaciones y dispositivos son más fáciles de romper, bloquearlos ayuda a mantener su cuenta más segura.

Algunos ejemplos de aplicaciones que no admiten los últimos estándares de seguridad incluyen:

  • La aplicación de correo en su iPhone o iPad con iOS 6 o inferior
  • La aplicación de correo en su teléfono Windows anterior a la versión 8.1
  • Algunos clientes de correo de escritorio como Microsoft Outlook y Mozilla Thunderbird

Por lo tanto, debes habilitar Inicio de sesión menos seguro en tu cuenta de google

Después de iniciar sesión en la cuenta de Google, vaya a:

https://myaccount.google.com/lesssecureapps 
o
https://www.google.com/settings/security/lesssecureapps 

En C #, puede usar el siguiente código:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

16
2017-08-09 07:28



Aquí está mi versión: "Enviar correo electrónico en C # con Gmail".

using System;
using System.Net;
using System.Net.Mail;

namespace SendMailViaGmail
{
   class Program
   {
   static void Main(string[] args)
   {

      //Specify senders gmail address
      string SendersAddress = "Sendersaddress@gmail.com";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "ReceiversAddress@yahoo.com";
      //Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
      const string SendersPassword = "Password";
      //Write the subject of ur mail
      const string subject = "Testing";
      //Write the contents of your mail
      const string body = "Hi This Is my Mail From Gmail";

      try
      {
        //we will use Smtp client which allows us to send email using SMTP Protocol
        //i have specified the properties of SmtpClient smtp within{}
        //gmails smtp server name is smtp.gmail.com and port number is 587
        SmtpClient smtp = new SmtpClient
        {
           Host = "smtp.gmail.com",
           Port = 587,
           EnableSsl = true,
           DeliveryMethod = SmtpDeliveryMethod.Network,
           Credentials    = new NetworkCredential(SendersAddress, SendersPassword),
           Timeout = 3000
        };

        //MailMessage represents a mail message
        //it is 4 parameters(From,TO,subject,body)

        MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
        /*WE use smtp sever we specified above to send the message(MailMessage message)*/

        smtp.Send(message);
        Console.WriteLine("Message Sent Successfully");
        Console.ReadKey();
     }

     catch (Exception ex)
     {
        Console.WriteLine(ex.Message);
        Console.ReadKey();
     }
    }
   }
 }

14
2017-10-17 21:19



Para que funcione, tuve que habilitar mi cuenta de Gmail para que otras aplicaciones tuvieran acceso. Esto se hace con "habilitar aplicaciones menos seguras" y además usando este enlace: https://accounts.google.com/b/0/DisplayUnlockCaptcha


13
2018-01-03 15:25



Espero que este código funcione bien. Puedes intentarlo.

// Include this.                
using System.Net.Mail;

string fromAddress = "xyz@gmail.com";
string mailPassword = "*****";       // Mail id password from where mail will be sent.
string messageBody = "Write the body of the message here.";


// Create smtp connection.
SmtpClient client = new SmtpClient();
client.Port = 587;//outgoing port for the mail.
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(fromAddress, mailPassword);


// Fill the mail form.
var send_mail = new MailMessage();

send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("from@gmail.com");
//address to which mail will be sent.           
send_mail.To.Add(new MailAddress("to@example.com");
//subject of the mail.
send_mail.Subject = "put any subject here";

send_mail.Body = messageBody;
client.Send(send_mail);

12
2017-10-15 10:00



Incluye esto,

using System.Net.Mail;

Y entonces,

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;

client.Send(sendmsg);

7
2017-10-09 12:39



Fuente : Enviar correo electrónico en ASP.NET C #

A continuación se muestra un código de trabajo de muestra para enviar un correo usando C #, en el siguiente ejemplo estoy usando el servidor smtp de google.

El código es bastante auto explicativo, reemplace el correo electrónico y la contraseña con sus valores de correo electrónico y contraseña.

public void SendEmail(string address, string subject, string message)
{
    string email = "yrshaikh.mail@gmail.com";
    string password = "put-your-GMAIL-password-here";

    var loginInfo = new NetworkCredential(email, password);
    var msg = new MailMessage();
    var smtpClient = new SmtpClient("smtp.gmail.com", 587);

    msg.From = new MailAddress(email);
    msg.To.Add(new MailAddress(address));
    msg.Subject = subject;
    msg.Body = message;
    msg.IsBodyHtml = true;

    smtpClient.EnableSsl = true;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = loginInfo;
    smtpClient.Send(msg);
}

6
2017-08-22 12:29