Envoyer un message via C # par compte Google Apps
-
09-09-2019 - |
Question
J'ai une norme compte Google Apps. J'ai installé un domaine personnalisé via Google Apps. Je suis en mesure d'envoyer et recevoir des e-mails avec succès via Google Apps lorsque j'utilise l'interface Gmail. Cependant, je veux envoyer un e-mail via le code. Pour tenter cela, je l'ai essayé le code suivant:
MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("someone@somewhere.com");
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 = "emailAddress@mydomain.com";
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 levée que les états:
"Le serveur SMTP requiert une sécurité connexion ou le client n'a pas été authentifié. La réponse du serveur était:. 5.5.1 Authentification requise "
Comment puis-je envoyer des e-mails à travers mon domaine personnalisé via Google?
Merci!
La solution
Il n'y a pas besoin de tous les paramètres de hardcode smtp dans votre code. Mettez-les dans web.config à la place. De cette façon, vous pouvez chiffrer ces paramètres si nécessaire et les changer à la volée sans recompiler votre application.
<configuration>
<system.net>
<mailSettings>
<smtp from="example@domain.com" deliveryMethod="Network">
<network host="smtp.gmail.com" port="587"
userName="example@domain.com" password="password"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
Fin lorsque vous envoyez un courriel activer simplement SSL sur votre SmtpClient:
var message = new MailMessage("navin@php.net");
// here is an important part:
message.From = new MailAddress("example@domain.com", "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 que vous envoyez email de la même adresse e-mail avec laquelle vous essayez d'authentifier à Gmail.
Remarque :. A partir de .NET 4.0, vous pouvez insérer EnableSSL = "true" dans web.config par opposition à la mise dans le code
Autres conseils
est ce que je l'utilise dans WPF 4
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try {
MailAddress
maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8),
maTo = new MailAddress("recipient_email@domain2.tld", "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 firewalls et anti-virus. Ces choses rampantes ont tendance à bloquer les applications envoyer des messages électroniques. J'utiliser McAfee Enterprise et je dois ajouter le nom de l'exécutable (comme Bazar. * Pour les Bazar.exe et Bazar.vshost.exe) pour pouvoir envoyer des courriels ...
changer le port 465
Il n'y a pas besoin de faire quoi que ce soit. Il suffit de vous connecter sur votre compte courant première fois et suivez les instructions.
Votre problème résoudra. Il se produit parce que vous aviez créé le compte dans les applications Google, mais ne pas se connecter. Il suffit de se connecter et suivez les instructions et essayer.
Mon code se connecte à l'aide smtp.google.com TLS sur le port = 587 (SSL doit être le port 465), mais a encore besoin 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);
Remarquez ces conditions préalables importantes sur votre compte G SUITE
- Assurez-vous que le nom d'utilisateur que vous utilisez a autorisé le test de vérification de mot de CAPTCHA qui apparaît lorsque vous connecter.
- Assurez-vous que le compte a un mot de passe sécurisé - https://support.google.com/ comptes / réponse / 32040
- Assurez-vous que les applications moins sécurisées est activé pour le choix Account- https: // support. google.com/a/answer/6260879