2017-02-22 5 views
0

Я пытаюсь отправить почту с помощью C# и Яндекс, но я получаю сообщение об ошибке:C# Яндекс почты Ошибки передачи 5.5.4 Ошибка: отправить команду AUTH первого

Error 5.5.4 Error: send AUTH command first

Вот мой код. Я пытаюсь использовать разные порты (587, 465 ..) и SMTP-хосты (smtp.yandex.com.tr, smtp.yandex.com, smtp.yandex.ru ...), но я получаю ту же ошибку для всех попыток.

SmtpClient sc = new SmtpClient("smtp.yandex.com.tr", 587); 
//sc.Port = 587; 
//sc.Host = "smtp.yandex.com"; 

sc.EnableSsl = false; 
sc.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["Email"].ToString(), 
                System.Configuration.ConfigurationManager.AppSettings["Sifre"].ToString()); 
sc.UseDefaultCredentials = false; 
sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 

ответ

1

Яндекс Почта не поддерживает соединение без SSL (по https://yandex.com/support/mail/mail-clients.xml). Попробуйте установить EnableSsl к истинному и использования хоста: smtp.yandex.com, порт: 465. Если он не будет работать - попробуйте порт 25

+2

Я SslEnabled = истина и испробовал все порты, но все еще получаю эту ошибку :( – noobed

1

Вы должны установить sc.Credentials = new System.Net.NetworkCredential() после вызова sc.UseDefaultCredentials = false;

UseDefaultCredentials = false сбросит Credentials к null

попробуйте переключить порядок строки на:

sc.UseDefaultCredentials = false; 
sc.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["Email"].ToString(), 
                System.Configuration.ConfigurationManager.AppSettings["Sifre"].ToString()); 

также допустимые значения для smtp.yandex.ru:

smtpUserName="" 
    enableSsl="true" 
    smtpPassword="" 
    smtpAuthentication="Basic" 
    smtpServer="smtp.yandex.ru" 
    smtpPort="465" 
0

Эта ошибка произойдет, если ваш пароль неверен. Это было по крайней мере для меня.

0

Я решаю эту проблему, меняя SMTP-хост с smtp.yandex.com на smtp.yandex.ru, и я использовал порт 25. Работает для меня отлично. Вот код:

EmailCredentials credentials = new EmailCredentials(); 
    credentials.Domain = "domain.com"; 
    credentials.SMTPUser = "[email protected]"; 
    credentials.SMTPPassword = "pass"; 
    int SmtpPort = 25; 
    string SmtpServer = "smtp.yandex.ru"; 

    MailMessage EmailMsg = new MailMessage(); 
    EmailMsg.From = new MailAddress("[email protected]", "Domain"); 
    EmailMsg.To.Add(new MailAddress("[email protected]", "[email protected]")); 
    EmailMsg.ReplyToList.Add("[email protected]"); 

    EmailMsg.Subject = "Welcome"; 

    EmailMsg.Body = "HTML body code"; 

    EmailMsg.IsBodyHtml = true; 
    EmailMsg.Priority = MailPriority.Normal; 

    System.Net.Mail.SmtpClient SMTP = new System.Net.Mail.SmtpClient(); 
    SMTP.Host = SmtpServer; 
    SMTP.Port = SmtpPort; 
    SMTP.EnableSsl = true; 
    SMTP.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
    SMTP.UseDefaultCredentials = false; 
    SMTP.Credentials = new System.Net.NetworkCredential(credentials.SMTPUser, credentials.SMTPPassword); 

    SMTP.Send(EmailMsg); 
Смежные вопросы