Envoyer un e-mail en .NET via Gmail

Envoyer un e-mail en .NET via Gmail


Source : Stack Overflow [.net]

Assurez-vous d’utiliser System.Net.Mail, pas l’obsolète System.Web.Mail. Faire du SSL avec System.Web.Mail est un bazar d’extensions bidouillées.

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

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "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);
}

De plus, allez sur la page Google Account > Security et regardez le paramètre Signing in to Google > 2-Step Verification.

  • Si c’est activé, alors vous devez générer un mot de passe permettant à .NET de contourner la vérification en deux étapes. Pour ce faire, cliquez sur Signing in to Google > App passwords, sélectionnez app = Mail, et appareil = Windows Computer, et enfin générez le mot de passe. Utilisez le mot de passe généré dans la constante fromPassword au lieu de votre mot de passe Gmail standard.

  • Si c’est désactivé, alors vous devez activer Less secure app access, ce qui n’est pas recommandé ! Il vaut donc mieux activer la vérification en deux étapes.