В практике разработки на платформе 1С часто возникает задача автоматической отправки уведомлений, отчетов или документов клиентам по электронной почте. Рассмотрим подробно, как реализовать этот функционал, используя встроенные возможности платформы, а именно объекты работы с интернет-почтой. Мы разберем полный цикл: от настройки профиля подключения до обработки возможных ошибок при отправке.
Первым шагом нам необходимо "представиться" почтовому серверу. Для этого в системе существует объект ИнтернетПочтовыйПрофиль. В нем мы укажем адрес SMTP-сервера, порт, логин и пароль пользователя, от имени которого будет происходить отправка.
Обратим внимание на важный момент: современные почтовые сервисы (Yandex, Gmail, Mail.ru) требуют использования защищенного соединения (SSL) и специальных портов (обычно 465 или 587). Рассмотрим пример настройки профиля:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.example.com"; // Укажите адрес вашего SMTP сервера
Профиль.ПортSMTP = 465; // Обычно 465 для SSL или 587 для TLS
Профиль.Пользователь = "robot@example.com";
Профиль.Пароль = "ВашПарольИлиПарольПриложения";
// Настройки безопасности
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
Профиль.ВремяОжидания = 30; // Таймаут в секундах
Если вы используете двухфакторную аутентификацию на почтовом сервисе, помните, что в поле Пароль часто требуется указывать не основной пароль от ящика, а специально сгенерированный "Пароль приложения".
Теперь создадим само письмо. За это отвечает объект ИнтернетПочтовоеСообщение. На этом этапе мы заполним тему, тело письма, укажем получателей и, что важно, добавим файлы вложений.
Проанализируем код создания сообщения. Обратите внимание, как мы добавляем получателя: метод Получатели.Добавить() принимает адрес электронной почты строкой.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "Отчет о продажах за месяц";
Сообщение.Получатели.Добавить("client@company.com");
Сообщение.Отправитель.Адрес = "robot@example.com";
// Формирование текста письма
ТекстПисьма = "Добрый день! Во вложении находится запрошенный вами отчет.";
Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
Если нам необходимо прикрепить файл, используем коллекцию Вложения. Метод Добавить принимает путь к файлу на диске (или двоичные данные) и необязательное имя, которое увидит получатель.
ПутьКФайлу = "C:\Reports\Sales_2023.pdf";
Попытка
Сообщение.Вложения.Добавить(ПутьКФайлу, "Отчет_Октябрь.pdf");
Исключение
Сообщить("Не удалось добавить вложение: " + ОписаниеОшибки());
КонецПопытки;
Финальный этап — непосредственное соединение с сервером и отправка. Для этого используем объект ИнтернетПочта. Настоятельно рекомендуем оборачивать процесс подключения и отправки в блок Попытка ... Исключение, так как сетевые ошибки (недоступность сервера, неверный пароль) возникают именно здесь.
Разберем алгоритм по шагам:
Профиль.Послать.
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Сообщить("Письмо успешно отправлено!");
Исключение
Сообщить("Ошибка при отправке почты: " + ОписаниеОшибки());
КонецПопытки;
// Отключаемся в любом случае (даже если была ошибка, но соединение установлено)
Почта.Отключиться();
Если при выполнении кода вы получаете ошибки, обратите внимание на следующие моменты:
1. Ошибка аутентификации. Проверьте правильность логина и пароля. Убедитесь, что почтовый сервер разрешает подключение сторонних приложений (в настройках безопасности почтового ящика).
2. Ошибка соединения. Часто блокировка происходит на уровне фаервола или антивируса, закрывающего порты 465/587/25. Попробуйте сменить порт или проверить настройки сети.
3. Кодировки. Иногда тема письма приходит в нечитаемом виде. В этом случае можно явно указать кодировку при создании сообщения, используя свойство Кодировка объекта ИнтернетПочтовоеСообщение, например, "UTF-8".
Используя этот подход, вы сможете надежно интегрировать отправку электронной почты в любые конфигурации на базе 1С:Предприятие 8.