При автоматизации рассылки писем из 1С с использованием протокола SMTP пользователи часто сталкиваются с тем, что отправленные сообщения не отображаются в папке «Отправленные» почтового клиента. Это происходит потому, что SMTP-сервер выполняет функцию передачи письма получателю, но не несет ответственности за архивацию копии у отправителя. Разберем, как решить эту задачу, учитывая современные требования безопасности и ограничения почтовых сервисов.
Ранее программисты пытались решать эту задачу через IMAP, используя свойство ТекущийПочтовыйЯщик. Однако этот подход имеет ряд проблем:
Кроме того, современные почтовые сервисы, такие как Mail.ru, требуют строгого соблюдения настроек безопасности, о которых важно помнить перед началом работы с кодом.
Перед тем как настраивать отправку, убедитесь, что вы используете «Пароль для внешних приложений». Обычный пароль от почты для 1С больше не подходит. Чтобы настроить корректное подключение:
ИнтернетПочтовыйПрофиль вашей обработки в 1С.Поскольку автоматическое перемещение письма в «Отправленные» средствами протокола SMTP не поддерживается, наиболее надежным способом является использование правил обработки почты (фильтров) на самом сервере. Рассмотрим алгоритм действий:
Этот метод считается «золотым стандартом», так как он не зависит от архитектуры вашей 1С или обновлений платформы. Весь процесс автоматизации выглядит следующим образом:
// Пример формирования сообщения с использованием скрытой копии
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Отправитель = "my_email@mail.ru";
Письмо.Получатели.Добавить("recipient@example.com");
Письмо.СкрытыеКопии.Добавить("my_email@mail.ru"); // Ключевой момент для автосохранения
Письмо.Тема = "Тестовое письмо";
Письмо.Тексты.Добавить("Это тестовое сообщение");
Если создание правил на сервере по каким-то причинам не подходит, можно реализовать принудительную запись письма в папку через ИнтернетПочта по протоколу IMAP. Однако этот метод требует предварительного поиска имени папки:
ИнтернетПочта.ПолучитьСписокЯщиков(), чтобы точно узнать, как называется ваша папка «Отправленные» на сервере (например, это может быть «Sent»).ИнтернетПочтовоеСообщение и сохраните его в найденную папку методом ИнтернетПочта.ДобавитьСообщение().Важно помнить, что метод ИнтернетПочта.Послать() в 1С предназначен строго для отправки. Если ваша задача — обеспечить максимальную стабильность, рекомендуем придерживаться метода со скрытой копией (BCC), так как он работает независимо от того, какие библиотеки или протоколы вы используете в коде 1С.