2012-02-26 3 views
0

ОШИБКА. Для SMTP-сервера требуется защищенное соединение или клиент не прошел аутентификацию. Ответ сервера: 5.5.1 Требуется аутентификация.Ошибка при отправке электронной почты из моей учетной записи gmail

мой код здесь:

protected void Button1_Click(object sender, EventArgs e) 
     { 
     Random r = new Random(); 
     int rand = r.Next(10000, 90000); 
     string from = "[email protected]"; 
     string to = "[email protected]"; 
     string subject = "User Authentification"; 
     string body = "click on the below link to AUTHENTICATE your account<br>"; 
     body += "confirmation.aspx?confirm=" + rand; 

     try 
     { 
      MailMessage mailObject = new MailMessage(from, to, subject, body); 

      SmtpClient smtp = new SmtpClient("smtp.gmail.com"); 
      smtp.Credentials = new NetworkCredential("[email protected]", "MyPassword"); 
      smtp.EnableSsl = true; 
      smtp.Port = 587; 
      smtp.UseDefaultCredentials = false; 

      smtp.Send(mailObject); 
     } 
     catch (Exception ee) 
     { 
      throw new ApplicationException("Confirmation email was not sent please try again or Try with a new email id<br>" + ee.Message); 
     } 
+2

Вы должны сохранить исключение InnerException при повторном создании. – SLaks

+0

HTML-код никогда не должен появляться в сообщениях об исключениях. – SLaks

+0

html не вызывает здесь проблемы –

ответ

2

Не устанавливайте UseDefaultCredentials.

+0

, следуя вашему ответу, я не получаю исключения в своей программе ... но я не получаю электронную почту даже сейчас ... –

+0

Проверьте фильтр спама. – SLaks

+0

yeah man ... thanx много ... я получил все свои письма в спаме –

1

Следующий код работает для меня:

SmtpClient client = new SmtpClient("smtp.gmail.com", 587); 
client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential("login", "password"); 
client.EnableSsl = true; 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 

Update: в akiller правильно предполагает, свойство UseDefaultCredentials должно быть установлено в falseперед тем присваивающих полномочий. Это и заставляет этот код работать.

+0

'Network' является значением по умолчанию. – SLaks

+0

@SLaks: да, но это может быть переопределено в app.config/machine.config –

+1

Наличие client.UseDefaultCredentials = false; перед тем, как строка, в которой вы устанавливаете учетные данные, - это то, что заставляет ее работать (в вопросе OPs это не так). – akiller

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