Question Envoyer un e-mail dans .NET via Gmail


Au lieu de me fier à mon hébergeur pour envoyer des courriels, je pensais envoyer les courriels en utilisant mon compte Gmail. Les emails sont des emails personnalisés pour les groupes que je joue sur mon show. Est-il possible de faire?


754
2017-08-28 13:28


origine


Réponses:


Assurez-vous d'utiliser System.Net.Mail, pas le déprécié System.Web.Mail. Faire SSL avec System.Web.Mail est un désordre grossier d'extensions 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 réponse ci-dessus ne fonctionne pas. Vous devez définir DeliveryMethod = SmtpDeliveryMethod.Network ou il reviendra avec un "le client n'a pas été authentifié"error.C'est toujours une bonne idée de mettre un timeout.

Code révisé:

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



Pour les autres réponses à travailler "d'un serveur" d'abord Activer l'accès pour les applications moins sécurisées dans le compte Gmail.

On dirait que Google a récemment changé sa politique de sécurité. La réponse la mieux notée ne fonctionne plus, jusqu'à ce que vous changiez les paramètres de votre compte comme décrit ici: https://support.google.com/accounts/answer/6010255?hl=en-GBenter image description here

enter image description here

En mars 2016, google a de nouveau changé le lieu de réglage!


71
2017-09-08 12:09



http://www.systemnetmail.com/ est probablement le site le plus absurdement complet dédié à un unique Espace de nommage .NET ... mais il a TOUT ce que vous pourriez vouloir savoir sur l'envoi de courrier via .NET, que ce soit ASP.NET ou Desktop.

http://www.systemwebmail.com/ était l'URL d'origine dans le message, mais ne doit pas être utilisé pour .NET 2.0 et supérieur.


64
2017-08-28 13:36



Ceci est d'envoyer un courriel avec pièce jointe .. Simple et court ..

la source: 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 peut bloquer les tentatives de connexion de certaines applications ou périphériques qui n'utilisent pas les normes de sécurité modernes. Étant donné que ces applications et appareils sont plus faciles à pénétrer, leur blocage contribue à la sécurité de votre compte.

Voici quelques exemples d'applications qui ne prennent pas en charge les dernières normes de sécurité:

  • L'application Mail sur votre iPhone ou iPad avec iOS 6 ou moins
  • L'application Mail sur votre téléphone Windows précédant la version 8.1
  • Certains clients de messagerie Desktop comme Microsoft Outlook et Mozilla Thunderbird

Par conséquent, vous devez activer Connexion moins sécurisée dans votre compte google

Après la connexion à google account, rendez-vous sur:

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

En C #, vous pouvez utiliser le code suivant:

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



Voici ma version: "Envoyer un e-mail en C # avec 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