2015-04-06 4 views
11

Я получаю сообщение об ошибке при попытке отправить электронное письмо через веб-службу. Я попытался разрешить доступ к менее безопасным приложениям, отключив двухэтапную аутентификацию и войдя в учетную запись через веб-браузер. Ни одно из решений для SO не сработало для меня. Я все еще получаю:Как отправить электронное письмо с помощью C# через Gmail

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.

Что я могу сделать, чтобы исправить эту проблему?

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

Смотрите, если это помогает: http://stackoverflow.com/questions/18503333/the-smtp-server-requires-a-secure-connection-o r-the-client-was-not-authenticated –

+1

У вас попытался выполнить ping-сервер, если да, то решение, упомянутое Eghbal Sohrabi, соответствует – Shubhojit

+0

@Shubhojit ping серверу Google? – Johnny

ответ

29

Just Go здесь: Less secure apps, Войдите используя ваш e-mail и пароль, которые используют для отправки почты в вашем C# код, и выберите Turn On.

Также, пожалуйста, перейдите по этой ссылке и нажмите на ПродолжитьAllow access to your Google account

также отредактировать его немного:

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

Если приведенный выше код не работает, попробуйте изменить его, как следующий код:

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

Я уже пробовал обе эти вещи, и это все еще не работает. – Johnny

+5

Оказывается, что 'smtp.UseDefaultCredentials = false;' должен идти до 'smtp.Credentials = new System.Net.NetworkCredential (« [email protected] »,« mypassword »);« Я просто поменял эти строки и все работает хорошо. – Johnny

+0

вы хотите изменить 'smtp.UseDefaultCredentials = true;' на 'smtp.UseDefaultCredentials = false; 'и поместить его для' smtp.Credentials = new System.Net.NetworkCredential ("[email protected]", "mypassword") ; 'если да, скажите мне, чтобы отредактировать мой ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^