web-dev-qa-db-fra.com

Envoyer un e-mail via C # via un compte Google Apps

J'ai un compte Google Apps standard. J'ai configuré un domaine personnalisé via Google Apps. Je peux envoyer et recevoir des e-mails avec succès via Google Apps lorsque j'utilise l'interface Gmail. Cependant, je veux envoyer un email avec un code. Pour tenter cela, j'ai essayé le code suivant:

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Test";
mailMessage.Body = "<html><body>This is a test</body></html>";
mailMessage.IsBodyHtml = true;

// Create the credentials to login to the gmail account associated with my custom domain
string sendEmailsFrom = "[email protected]";             
string sendEmailsFromPassword = "password";
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword);

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Timeout = 20000;
mailClient.Credentials = cred;
mailClient.Send(mailMessage); 

Lorsque la méthode Send est atteinte, une exception est émise et indique:

"Le serveur SMTP requiert une connexion Sécurisée ou le client n'était pas authentifié La réponse du serveur Était: 5.5.1 Authentification requise."

Comment envoyer des courriels via mon domaine personnalisé via Google?

Merci!

63
user70192

Il n'est pas nécessaire de coder en dur tous les paramètres smtp de votre code. Placez-les plutôt dans web.config. De cette façon, vous pouvez chiffrer ces paramètres si nécessaire et les modifier à la volée sans recompiler votre application.

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="[email protected]" deliveryMethod="Network">
          <network Host="smtp.gmail.com" port="587"
              userName="[email protected]" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

Terminez lorsque vous envoyez un courrier électronique, activez simplement SSL sur votre SmtpClient:

var message = new MailMessage("[email protected]");
// here is an important part:
message.From = new MailAddress("[email protected]", "Mailer");
// it's superfluous part here since from address is defined in .config file
// in my example. But since you don't use .config file, you will need it.

var client = new SmtpClient();
client.EnableSsl = true;
client.Send(message);

Assurez-vous d’envoyer un courrier électronique à partir de la même adresse que celle avec laquelle vous essayez de vous authentifier chez Gmail.

Remarque : À partir de .NET 4.0, vous pouvez insérer enableSsl = "true" dans web.config, par opposition à un code.

91
Konstantin Tarkus

C'est ce que j'utilise dans WPF 4

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("[email protected]", "P@$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;

try {
    MailAddress
        maFrom = new MailAddress("[email protected]", "Sender's Name", Encoding.UTF8),
        maTo = new MailAddress("[email protected]", "Recipient's Name", Encoding.UTF8);
    MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address);
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>";
    mmsg.BodyEncoding = Encoding.UTF8;
    mmsg.IsBodyHtml = true;
    mmsg.Subject = "Some Other Text as Subject";
    mmsg.SubjectEncoding = Encoding.UTF8;

    client.Send(mmsg);
    MessageBox.Show("Done");
} catch (Exception ex) {
    MessageBox.Show(ex.ToString(), ex.Message);
    //throw;
}

Surveillez les pare-feu et les antivirus. Ces choses effrayantes ont tendance à bloquer l’envoi d’e-mails par les applications . J’utilise McAfee Enterprise et je dois ajouter le nom du fichier exécutable (comme Bazar. * Pour Bazar.exe et Bazar.vshost.exe) pour pouvoir envoyer des emails .. .

7
Achilles

Il n'y a pas besoin de faire quoi que ce soit. Connectez-vous à votre compte actuel pour la première fois et suivez les instructions. 

Votre problème va résoudre. Cela se produit parce que vous avez créé le compte dans Google Apps mais ne vous êtes pas connecté. Connectez-vous, suivez les instructions et essayez.

3
Jeevan

changer le port en 465

3
sf.

Mon code se connecte à smtp.google.com en utilisant TLS sur le port = 587 (SSL doit être le port 465) mais nécessite toujours EnableSsl = true. 

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
NetworkCredential credentials = new NetworkCredential();
credentials.UserName = "INSERT EMAIL";
credentials.Password = "INSERT PASSWORD";
smtp.Credentials = credentials;

MailAddress addressFrom = new MailAddress(credentials.UserName);
MailAddress addressTo = new MailAddress("INSERT RECIPIENT");
MailMessage msg = new MailMessage(addressFrom, addressTo);
msg.Subject = "SUBJECT"
msg.Body = "BODY";

smtp.Send(msg);

Notez ces conditions préalables importantes sur votre compte G SUITE

0