web-dev-qa-db-fra.com

Comment envoyer un e-mail avec C # via Gmail

Je reçois une erreur lorsque j'essaie d'envoyer un e-mail via mon service Web. J'ai essayé d'activer l'accès à des applications moins sécurisées, désactivant la vérification en deux étapes et me connectant au compte via un navigateur Web. Aucune des solutions sur SO n'a fonctionné pour moi. Je reçois toujours:

Erreur: System.Net.Mail.SmtpException: le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Authentification requise.

Que puis-je faire pour résoudre ce problème?

namespace EmailService
{
    public class Service1 : IService1
    {    
        public string SendEmail(string inputEmail, string subject, string body)
        {
            string returnString = "";
            try
            {
                MailMessage email = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";

                // set up the Gmail server
                smtp.EnableSsl = true;
                smtp.Port = 587;
                smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword");
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = false;

                // draft the email
                MailAddress fromAddress = new MailAddress("[email protected]");
                email.From = fromAddress;
                email.To.Add(inputEmail);
                email.Subject = body;
                email.Body = body;

                smtp.Send(email);

                returnString = "Success! Please check your e-mail.";
            }
            catch(Exception ex)
            {
                returnString = "Error: " + ex.ToString();
            }
            return returnString;
        }
    }
}
12
Johnny

Allez simplement ici: applications moins sécurisées , connectez-vous à l'aide de votre adresse e-mail et de votre mot de passe qui permettent d'envoyer des messages dans votre code c #, et choisissez Turn On.

Veuillez également cliquer sur ce lien et cliquer sur Continuer Autoriser l'accès à votre compte Google

aussi je l'édite un peu:

public string sendit(string ReciverMail)
{
    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("[email protected]");
    msg.To.Add(ReciverMail);
    msg.Subject = "Hello world! " + DateTime.Now.ToString();
    msg.Body = "hi to you ... :)";
    SmtpClient client = new SmtpClient();
    client.UseDefaultCredentials = true;
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = new NetworkCredential("[email protected]", "YourPassword");
    client.Timeout = 20000;
    try
    {
       client.Send(msg);
        return "Mail has been successfully sent!";
    }
    catch (Exception ex)
    {
        return "Fail Has error" + ex.Message;
    }
    finally
    {
       msg.Dispose();
    }
}

Si le code ci-dessus ne fonctionne pas, essayez de le changer comme le code suivant:

    SmtpClient client = new SmtpClient();
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("[email protected]", "YourPassword");
33
Eghbal Sohrabi