При попытке настроить отправку электронной почты из 1С через серверы Яндекса многие разработчики сталкиваются с проблемами, даже если код кажется абсолютно верным. Стандартные настройки, которые работали раньше или работают с другими почтовыми сервисами, для Яндекса могут не подойти. Чаще всего система возвращает ошибку, связанную с аутентификацией, например, "SMTP Authentication cancelled".
Давайте подробно разберем, почему возникает эта ошибка и как по шагам настроить отправку писем через Яндекс, чтобы все работало стабильно и безопасно.
Рассмотрим стандартный код для отправки письма, с которым обычно и возникает проблема. Он выглядит примерно так:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПользовательSMTP = "vash_login@yandex.ru";
Профиль.ПарольSMTP = "vash_obychniy_parol"; // Здесь кроется первая ошибка!
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить("Тестовое сообщение");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Письмо.Тема = "Тест отправки из 1С";
Письмо.Отправитель = "vash_login@yandex.ru";
Письмо.Получатели.Добавить("adresat@example.com");
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Письмо);
Сообщить("Письмо успешно отправлено!");
Исключение
Сообщить("Не удалось отправить письмо.");
Сообщить(ОписаниеОшибки()); // Часто здесь "SMTP Authentication cancelled"
КонецПопытки;
На первый взгляд, все параметры указаны верно: сервер smtp.yandex.ru, порт 465 и использование SSL. Однако при выполнении этого кода система выдает ошибку. Причина заключается не в коде, а в политике безопасности Яндекса.
Современные почтовые сервисы, включая Яндекс, в целях безопасности блокируют доступ сторонним приложениям (таким как 1С), если те пытаются авторизоваться с использованием основного пароля от аккаунта. Чтобы предоставить доступ, необходимо сгенерировать специальный, одноразовый пароль для конкретного приложения.
Рассмотрим по шагам, как это сделать.
Прежде чем создавать пароль, нужно разрешить внешним программам работать с вашим ящиком. Без этого шага ничего не получится.
Теперь сгенерируем отдельный пароль, который 1С будет использовать для авторизации.
После создания Яндекс покажет вам 16-значный пароль. Важно: этот пароль отображается только один раз! Скопируйте его и сохраните в надежном месте. Если вы закроете окно, не скопировав пароль, посмотреть его снова будет невозможно — придется создавать новый.
Теперь вернемся к нашему коду 1С и внесем ключевое изменение:
// ... (начало кода без изменений)
Профиль.ПользовательSMTP = "vash_login@yandex.ru";
// Вместо основного пароля указываем сгенерированный пароль приложения
Профиль.ПарольSMTP = "СЮДА_ВСТАВИТЬ_16_ЗНАЧНЫЙ_ПАРОЛЬ_ПРИЛОЖЕНИЯ";
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
// ... (остальной код)
После этой замены отправка писем должна заработать корректно.
Если после использования пароля приложения проблема не ушла, стоит проверить еще несколько моментов.
Иногда значение СпособSMTPАутентификации.ПоУмолчанию может работать непредсказуемо. Попробуйте явно указать метод аутентификации Login. Это более надежный вариант.
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
В обсуждениях иногда возникает вопрос о поддержке SSL самой платформой 1С. Важно знать, что современные релизы платформы 1С:Предприятие 8.3 (примерно с версии 8.3.5) нативно поддерживают SSL/TLS. Свойство Профиль.ИспользоватьSSLSMTP = Истина работает корректно, и установка дополнительных утилит вроде Stunnel в большинстве случаев не требуется. Если вы работаете на очень старой версии платформы, возможно, потребуется ее обновление.
В редких случаях некоторые почтовые серверы требуют сначала аутентифицироваться для получения почты (по протоколу POP3), и только после этого разрешают отправку (по SMTP). В объекте ИнтернетПочтовыйПрофиль для этого есть специальное свойство:
Профиль.POP3ПередSMTP = Истина;
При использовании этого свойства необходимо также заполнить параметры для POP3 сервера в том же профиле (АдресСервераPOP3, ПортPOP3, ПользовательPOP3 и т.д.). Для Яндекса это:
pop.yandex.ru995ИстинаОднако для большинства современных конфигураций этот метод не требуется.
Сохраните себе правильные параметры для программной работы с почтой Яндекс:
Для отправки (SMTP):
smtp.yandex.ru465ИспользоватьSSLSMTP = Истина)СпособSMTPАутентификации.Login)vash_login@yandex.ruДля получения (IMAP - рекомендуется):
imap.yandex.ru993Таким образом, ключ к успешной отправке почты из 1С через Яндекс — это использование современных методов аутентификации, предусмотренных самим сервисом. Создание и использование паролей приложений решает 99% всех проблем с ошибкой "SMTP Authentication cancelled".