2016-06-23 7 views
0

Я использую C# для отправки электронной почты с использованием SMTP и gmail-сервера.Отправка электронной почты с помощью live/gmail smtp

Ниже приведен код, используемый для отправки электронной почты. Я встречаю несколько ошибок, то есть

Для SMTP-сервера требуется защищенное соединение, или клиент не прошел аутентификацию. Ответ сервера: 5.5.1 Требуется аутентификация.

public static bool SendEmail(string from, string[] to, string[] cc, string[] bcc, string subject, string body, bool isBodyHtml, List<Attachment> attachmentList) 
    { 
     try 
     { 
      var mailMessage = new MailMessage(); 
      var smtpClient = new SmtpClient(); 

      mailMessage.From = new MailAddress(from); 
      mailMessage.To.Add(new MailAddress(string.Join(",", to))); 

      if (cc != null && cc.Any()) 
      { 
       mailMessage.CC.Add(new MailAddress(string.Join(",", cc))); 
      } 

      if (bcc != null && bcc.Any()) 
      { 
       mailMessage.Bcc.Add(new MailAddress(string.Join(",", bcc))); 
      } 

      mailMessage.Subject = subject; 
      mailMessage.Body = body; 
      mailMessage.IsBodyHtml = isBodyHtml; 

      if (attachmentList != null) 
      { 
       foreach (var attachment in attachmentList) 
       { 
        mailMessage.Attachments.Add(attachment); 
       } 
      } 

      smtpClient.Host = "smtp.gmail.com"; 
      smtpClient.Port = 587; //465 
      smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "passsword"); 
      smtpClient.EnableSsl = true; 
      smtpClient.Send(mailMessage); 

      return true; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 
    } 

Что я делаю неправильно и как я могу использовать Gmail для отправки электронной почты.

+2

Вы проверили, что учетные данные действительно правильные? – Adwaenyth

+0

Да, учетные данные верны. – Immortal

+0

поместите эту строку в свой код, если вы укажете конкретный адрес электронной почты и пароль 'smtpClient.UseDefaultCredentials = false;' –

ответ

3

Вы не установили UseDefaultCredentials в false, так что, несмотря на то, вы предоставили учетные данные, приложение по-прежнему пытается использовать свои учетные данные для входа окна в SMTP. Попробуйте ниже:

smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "passsword"); 

UseDefaultCredentials должен быть установлен falseперед тем установить новые учетные данные в сети.

+1

'UseDefaultCredentials' по умолчанию установлено значение 'false'. Вы должны установить его в' true' вручную, если вы действительно хотите использовать учетные данные по умолчанию. – Adwaenyth

+0

@ user1666620, Большое спасибо, здесь было место размещения UseDefaltCredentials. – Immortal

+2

@Adwaenyth если для параметра 'UseDefaultCredentials' установлено значение' false' по умолчанию, вам не нужно будет устанавливать его на 'false', чтобы заставить приложение работать. Я знаю, что в документации указано иное, но это не будет первая временная документация было неверно. https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.usedefaultcredentials(v=vs.110).aspx – user1666620

2

Если вы уверены, что ваше имя пользователя и пароль верны, и вы по-прежнему получаете сообщение об ошибке, это означает, что Gmail заблокировал ваше приложение.

Попробуйте включить его здесь Grant Access to Less Secure Apps

Secure App

+1

У Gmail менее безопасные приложения равны true. Таким образом, я проверил, но все равно получаю ту же ошибку :( – Immortal

+1

для downvoter, в то время как это не то, что вызвало ошибку, полученную OP, если менее безопасные приложения не включены, вы получите сообщение об ошибке, описанную OP. – user1666620