2015-04-06 18 views
11

Otrzymuję komunikat o błędzie podczas próby wysłania wiadomości e-mail za pośrednictwem mojego serwisu internetowego. Próbowałem umożliwić dostęp do mniej bezpiecznych aplikacji, wyłączając weryfikację 2-etapową i logując się na konto za pomocą przeglądarki internetowej. Żadne z rozwiązań SO nie sprawdziło się u mnie. Wciąż otrzymuję:Jak wysłać wiadomość e-mail z C# przez Gmaila

Error: System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required.

Co mogę zrobić, aby rozwiązać ten problem?

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; 
     } 
    } 
} 
+0

Zobacz, czy to pomaga: http://stackoverflow.com/questions/18503333/the-smtp-server-requires-a-secure-connection-o r-the-client-was-not-authenticated –

+1

Czy próbowałeś pingować serwer, jeśli tak, to rozwiązanie wspomniane przez Eghbala Sohrabiego jest ok. – Shubhojit

+0

@Shubhojit pingować serwer Google? – Johnny

Odpowiedz

29

Just Go tutaj: Less secure apps należy zalogować się na swój e-mail i hasło, które wykorzystują do wysyłania poczty w kodzie C#, a następnie wybierz Turn On.

Także proszę przejść do tego linku i kliknij dalejAllow access to your Google account

również edytować to trochę:

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(); 
    } 
} 

Jeżeli powyższy kod nie zadziała, spróbuj zmienić go lubią Poniższy kod:

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"); 
+0

Próbowałem już obu tych rzeczy i nadal nie działa. – Johnny

+5

Okazuje się, że 'smtp.UseDefaultCredentials = false;' musi iść przed 'smtp.Credentials = new System.Net.NetworkCredential (" [email protected] "," mojehasło ");' Po prostu zamieniłem te linie i wszystko działa w porządku. – Johnny

+0

oznacza, że ​​należy zmienić 'smtp.UseDefaultCredentials = true;' na 'smtp.UseDefaultCredentials = false;' i umieścić go przed 'smtp.Credentials = new System.Net.NetworkCredential (" [email protected] "," mojehasło ") ; 'jeśli tak, powiedz mi, aby edytować moją odpowiedź. –

Powiązane problemy