I try to send mail using C# and yandex, but I get an error:
Error 5.5.4 Error: send AUTH command first
Here is my code. I try with different ports (587, 465..) and SMTP hosts (smtp.yandex.com.tr, smtp.yandex.com, smtp.yandex.ru…) but I get the same error for all attempts.
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;
marc_s
729k175 gold badges1327 silver badges1455 bronze badges
asked Feb 22, 2017 at 12:24
I had same error and I correct it via doing some setting at mail.yandex.com (in email account)
To fix it;
— Enter the mail address (mail.yandex.com)
— Settings
— Other Email application
— Set selected POP3 setting that is all.
Note : I used 587 port and smtp.yandex.com.tr host.
Have a nice day
answered Jul 8, 2019 at 9:01
0
You must set sc.Credentials = new System.Net.NetworkCredential()
after calling sc.UseDefaultCredentials = false;
UseDefaultCredentials = false
will reset Credentials
to null
try to switch lines order to:
sc.UseDefaultCredentials = false;
sc.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["Email"].ToString(),
System.Configuration.ConfigurationManager.AppSettings["Sifre"].ToString());
also valid settings for smtp.yandex.ru:
smtpUserName=""
enableSsl="true"
smtpPassword=""
smtpAuthentication="Basic"
smtpServer="smtp.yandex.ru"
smtpPort="465"
answered Aug 2, 2017 at 7:23
razonrazon
3,8042 gold badges32 silver badges46 bronze badges
Yandex Mail doesn’t support connection without SSL (according to https://yandex.com/support/mail/mail-clients.xml). Try to set EnableSsl
to true and use host: smtp.yandex.com
, port: 465. If it will not work — try port 25
answered Feb 22, 2017 at 14:12
oryoloryol
5,1782 gold badges23 silver badges18 bronze badges
1
If it is a newly generated mail address, you must login with your browser and accept the agreement before trying to send email from C#. It was the case for me.
answered Jun 20, 2022 at 20:47
This error will happen if your password is wrong. That was the case for me at least.
answered Sep 21, 2017 at 21:17
I solve this problem my changing the SMTP host from smtp.yandex.com to smtp.yandex.ru and i was using port 25.
Works for me perfectly.
Here is the code:
EmailCredentials credentials = new EmailCredentials();
credentials.Domain = "domain.com";
credentials.SMTPUser = "webmail@domain.com";
credentials.SMTPPassword = "pass";
int SmtpPort = 25;
string SmtpServer = "smtp.yandex.ru";
MailMessage EmailMsg = new MailMessage();
EmailMsg.From = new MailAddress("webmail@domain.com", "Domain");
EmailMsg.To.Add(new MailAddress("info@domain.mk", "info@domain.mk"));
EmailMsg.ReplyToList.Add("info@domain.com");
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);
answered Mar 1, 2018 at 17:44
There are two spf records in cpanel Domains Manage/Manage Zone. Deleting one fixed it. just leave the yandex spf record, delete the other one, it will be fixed.
answered May 15 at 22:00
в супорте тут пишут:
ЦитатаERR [AUTH] login failure Ошибка авторизации. Сверьте настройки авторизации с теми, что предлагаются в справочной системе почтового сервера или запросите их у администрации сервера.
Цитатаor POP3 disabled Или отключен доступ по протоколу РОР3 для приёма почты. Если почтовый сервер предоставляет доступ через веб-интерфейс, то стоит проверить настройки ящика посредством веб-интерфейса, возможно там отключен доступ. Эту проблему может проверить только администрация почтового сервера, т.к. программа только цитирует сообщение сервера.
а человек, который разрабатывал сайт пишет.
http://help.yandex.ru/mail/?id=1113133
— здесь описана настройка The Bat для
почты, в качестве имени надо указывать полный адрес почты (например
elena@medisana39.ru
). Если сделаете все в соответствии с указаниями, должно
заработать, так же должны быть включены разрешение на использование почтовых
программ в самой почте (веб интерфейс -> настройка -> почтовые программ,
необходимо включить нужный Вам протокол IMAP или POP3).
а я как дилетант в этих вопросах, всё полистал, посмотрел.
в супорт яндекса писать смысла невижу, потому как, другая почта на яндексе TheBat! работает нормально, я сверил настройки транспорта они одинаковые на обоих компах, подскажите, лицензия слетит если попробовать переустановить программу саму? или нет смысла
Изменено: Евгений Торяник — 24.04.2013 18:54:43
Добрый день участники!
Столкнулся с проблемой, перерыл весь интернет, но нигде ничего путевого не нашел.
Использую Laravel 5.4 на Debian 8, проблема в следующем.
При попытке отправить письмо, выводит ошибку Expected response code 250 but got code «503», with message «503 5.5.4 Error: send AUTH command first.»
Пробовал и удалять все из .env и менять порты 465/587, менять TLS/SSL и прописывать ssl://smtp.yandex.ru — все бесполезно.
Все пароли от ящика подходят.
Настройки .env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=587
MAIL_USERNAME=admin@example.ru
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
Настройки config/mail.php
<?php
return [
‘driver’ => env(‘MAIL_DRIVER’, ‘smtp’),
‘host’ => env(‘MAIL_HOST’, ‘smtp.yandex.com’),
‘port’ => env(‘MAIL_PORT’, 587),
‘from’ => [
‘address’ => env(‘MAIL_FROM_ADDRESS’, ‘admin@example.ru’),
‘name’ => env(‘MAIL_FROM_NAME’, ‘Example’),
],
‘encryption’ => env(‘MAIL_ENCRYPTION’, ‘tls’),
‘username’ => env(‘admin@example.ru’),
‘password’ => env(‘password’),
‘sendmail’ => ‘/usr/sbin/sendmail -bs’,
‘pretend’ => false,
‘markdown’ => [
‘theme’ => ‘default’,
‘paths’ => [
resource_path(‘views/vendor/mail’),
],
],
];
Использую простую функцию для отправки письма
Mail::raw(‘Текст письма’, function($message){
$message->from(‘admin@example.ru’, ‘Admin’);
$message->to(‘admin@admin.ru’);
});
Замечу одну вещь, при использовании другого smtp скрипта, письма отправляются успешно.
Ошибка возникающая при попытке отправки почты — 5.5.4 Error: send AUTH command first. Как эту неприятность исправить?
Чаще всего ошибка 5.5.4 Error: send AUTH command first при попытке отправить почту возникает у новых пользователей почтовых ящиков не только Яндекса, но и других доменов использующих корпоративную почту которую Яндекс предоставляет. При том не только в России, но у в региональных отделениях других стран.
Главная неприятность в том, что по крайне информативному сообщению устранить неисправность просто невозможно. Нам говорят что нужно сделать, но как это сделать не ясно. И настройки точно все правильные.
Сложного на практике ничего нет. Ошибка 5.5.4 Error: send AUTH command first возникает у новых пользователей которые создают почтовые ящики в панели управления и тут же пытаются отправлять сообщения почтовыми клиентами. Нужно помнить о том что новый почтовый ящик в Яндексе — недоактивирован!
Для полного включения всех функций, а именно отправки почты, нужно войти в новый почтовый ящик сначала через вэб интерфейс, через браузер. Как раз в этом случае первое что Вам предложат — принять лицензионное соглашение. Как только волшебная кнопка будет нажата отправка почты сразу начнет работать без замечаний и ошибок.
Как сконфигурировать postfix, чтобы он отправлял почту через stmp-сервер Яндекса
4 июля 2022 г.
• 3 min read
Я тут перевез свой блог в Облако Яндекса и по пути столкнулся с трудностью — не отправляются письма. В логах моего любимого почтовика постфикса ошибка:
Jun 17 00:32:56 vm1 postfix/smtp[1374175]: connect to gmail-smtp-in.l.google.com[142.251.1.26]:25: Connection timed out
Jun 17 00:32:56 vm1 postfix/smtp[1374175]: connect to gmail-smtp-in.l.google.com[2a00:1450:4010:c0d::1a]:25: Network is unreachable
Jun 17 00:33:26 vm1 postfix/smtp[1374175]: connect to alt1.gmail-smtp-in.l.google.com[142.250.157.27]:25: Connection timed out
Jun 17 00:33:26 vm1 postfix/smtp[1374175]: connect to alt1.gmail-smtp-in.l.google.com[2404:6800:4008:c13::1a]:25: Network is unreachable
Jun 17 00:33:56 vm1 postfix/smtp[1374175]: connect to alt2.gmail-smtp-in.l.google.com[173.194.202.26]:25: Connection timed out
Обратился в поддержку. Оказалось, что из облака исходящий трафик на 25 порт заблокирован. Отправлять почту можно только через сервера яндекса от имени какого-то пользователя.
Поскольку мой домен — codepoetry.ru
То пользователь пусть будет root@codepoetry.ru
Домен уже делегирован на яндекс, поэтому я просто добавил нового пользователя и залогинился под ним в почту, чтобы поставить галочку «Я согласен …»
Потом от этого пользователя зашел в настройки профиля и создал отдельный пароль:
Если у вас нет своего домена, то можете просто создать новый ящик вида
myserverroot@yandex.ru
— в остальном настройка ничем не отличается.
Дальше можно перейти к настройке, собственно, postfix.
Postfix relay
Дописываем в основной конфиг /etc/postfix/main.cf
следующие строки:
smtp_sasl_auth_enable = yes
smtp_tls_security_level = encrypt
smtp_tls_wrappermode = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = [smtp.yandex.ru]:465
Создаем файл с логином-паролем:
sudo touch /etc/postfix/sasl_passwd
sudo chmod 0640 /etc/postfix/sasl_passwd
И пишем туда:
[smtp.yandex.ru]:465 root@codepoetry.ru:my-password
Тут важно отметить, что строка [smtp.yandex.ru]:465
должна быть одинаковой и там и там.
Потом не забудьте превратить файл в базу данных:
sudo postmap /etc/postfix/sasl_passwd
И сделаем релоад, чтобы постфикс подхватил изменения конфига
sudo systemctl reload postfix
Проверка
Дальше я открыл в одном окне логи
sudo tail -f /var/log/mail.log
А из другого отправлял письма
echo "This is the body of the email" | mail -s "This is the subject line" dima@gmail.com
Письмо не ушло, а в логе появилась ошибка 553 5.7.1 Sender address rejected: not owned by auth user. 1655646734-7knhhkCpkb-qEMS4B3Z (in reply to MAIL FROM command))
В статьях яндекса об этом говорится. По логу выше видно, что в поле FROM
стоит адрес from=dima@vm1.ru-central1.internal
— а должно быть root@codepoetry.ru
, иначе яндекс не примет.
Поэтому я добавил в main.cf
:
smtp_generic_maps = hash:/etc/postfix/generic
И создал файл /etc/postfix/generic
:
@vm1.ru-central1.internal root@codepoetry.ru
Теперь для любых отправленных с сервера писем в момент их выхода будет подменяться адрес отправителя. Не забудем переиндексировать:
sudo postmap /etc/postfix/generic
sudo systemctl reload postfix
Другие возможные ошибки
503 5.5.4 Error: send AUTH command first. 1655644978-vxV6fiLXFy-MwN8PqpG (in reply to MAIL FROM command))
Вы забыли включить smtp_sasl_auth_enable = yes
SMTPS wrappermode (TCP port 465) requires setting "smtp_tls_wrappermode = yes", and "smtp_tls_security_level = encrypt" (or stronger)
status=deferred (delivery temporarily suspended: SASL authentication failed; cannot authenticate to server smtp.yandex.ru[77.88.21.158]: no mechanism available)
status=deferred (SASL authentication failed; server smtp.yandex.ru[77.88.21.158] said: 535 5.7.8 Error: authentication failed: This user does not have access rights to this service 1655646115-7Ko3u9UTap-ftNKo6bN)
Вот эта ошибка интересная и сначала поставила меня в тупик. Чтобы победить, нужно разрешить доступ почтовых программ в настройках почты:
Не очевидно, что imap влияет на возможность функционирования smtp.