Консультант по 1С в Крыму. +7(978)857-2035

Помогу с 1С!

программист 1С Симферополь

Позвоните:
+7(978)857-2035

Почта в 1С - V7Mail, ROM-Mail

/ Просмотров: 67820

В хозяйственной деятельности многих предприятий часто возникает необходимость отправки и приёма сообщений по электронной почте в программе "1С:Предприятие". Как правило, чаще всего выполняется отправка почтовых сообщений из программы. Сообщения могут отправляться по разным поводам. Например, нужно отправить электронное

письмо клиенту или поставщику. Или необходимо автоматизировать процесс формирования счёта-фактуры в формате PDF с последующей отправкой созданного файла по электронной почте. Или, с целью соблюдения безопасности и предотвращения ошибок, будет полезным посылать электронные извещения начальнику отдела продаж о том, скажем, что один из менеджеров дал клиенту скидку больше установленной величины. Поводов для отправки почтовых сообщений по электронной почте, на самом деле, может быть много и разных.

 

Предлагаю рассмотреть несколько внешних компонент, с помощью которых можно работать с электронной почтой в программе "1С:Предприятие".

  • V7Mail
  • ROM-Mail

V7Mail

 

Для того, чтобы удовлетворить потребности пользователей программы "1С:Предприятие" и расширить функциональные возможности программы,

фирма "1С" выпустила внешнюю компоненту V7Plus, в состав которой входит объект V7Mail, предназначенный для отправки и получения электронных почтовых сообщений. Ниже представлен пример использования объекта V7Mail для отправки электронного почтового сообщения.

 

//функция выполняет отправку электронного сообщения с использованием объекта V7Mail внешней компоненты V7Plus

Процедура ОтправитьПочту()

     Если ЗагрузитьВнешнююКомпоненту("V7Plus.dll")=0 Тогда

          Сообщить("Не удалось загрузить файл V7Plus.dll");

          Возврат;

     КонецЕсли;

     //

     Почта=СоздатьОбъект("AddIn.V7Mail");

     Почта.Подключиться();

     Почта.НовоеСообщение();

     Почта.Заголовок=ТемаПисьма;

     Почта.Текст=ТекстПисьма;

     //получатели

     Почта.ДобавитьАдрес(АдресПолучателя);

     //вложения

     Для й=1 По Вложения.РазмерСписка() Цикл

          ТекФайл=Вложения.ПолучитьЗначение(й);

          Почта.ДобавитьФайл(ТекФайл);

     КонецЦикла;

     //отправка

     Почта.Послать();

     Почта.Отключиться();

КонецПроцедуры

Объект V7Mail внешней компоненты V7Plus всем хорош за исключением одного маленького недостатка, который может существенно снизить комфорт от работы с программой "1С:Предприятие". Дело в том, что объект V7Mail внешней компоненты V7Plus использует системный MAPI интерфейс для отправки почты, поэтому электронное сообщение будет фактически уходить через почтовый клиент, используемый в системе для отправки почты по умолчанию. Для пользователей такая система отправки сообщений не удобна, потому что требует нажатия на кнопки диалоговых окон, появляющихся на экране монитора в ходе отправки почты.

 

Внешняя компонента ROM-Mail

 

Для того, чтобы оптимизировать процедуру отправки электронной почты и

избавить пользователей от необходимости отвечать на дополнительные вопросы системы, я рекомендую использовать внешнюю компоненту ROM-Mail.

 

Внешняя компонента ROM-Mail не использует MAPI интерфейс и работает по протоколам SMTP и POP3 напрямую. Другими словами, это самостоятельный почтовый клиент, работающий в программе "1С:Предприятие".

 

Компонента ROM-Mail имеет такие функции:

  • поддержка стандартов MIME, UU-ENCODE
  • кодирование Base64 и QuotedPrintable
  • поддерживаются основные таблицы кодировок кириллицы: DOS, Windows-1251, KOI8-R, MAC
  • сообщения, состоящие из нескольких частей (multipart)
  • отправка, получение, сохранение вложенных файлов (attachment)
  • отправка тела сообщения в форматах ТЕКСТ (plain/text), HTML (plain/html), RTF (richable)
  • доступ как к указанной строке тела сообщения (построчное чтение) так и получение всего тела сразу
  • использование полей CC (копия), BCC (скрытая копия)
  • настройка параметров соединения на странице свойств компоненты
  • сохранение соединения (keep alive)
  • настройка аутентификации на странице свойств
  • возможность установки произвольного значения полей АдресОтправителя (From) и ИмяОтправителя (FromName), в том числе оставлять эти значения пустыми
  • выбор вида аутентификации при входе на SMTP-сервер (None, Login)
  • возможность выбора: забирать или оставлять сообщения на сервере
  • возможность установки каталога для сохранения вложений
  • пометка/снятие пометки на удаление
  • перекодировка (Строка, Флаг), метод реализует 20 направлений перекодировки в различные таблицы кодировок
  • пингование Ping (Host), метод возвращает процент потерь, атрибут PingText содержит строку-результат выполнения метода Ping.

Из приведённого списка видно, что внешняя компонента ROM-Mail обладает по сравнению с внешней компонентой V7Plus намного большим набором методов и функций, которые значительно повышают эффективность работы с электронной почтой в программе "1С:Предприятие". Ниже представлен образец программного кода, описывающего отправку электронной почты из программы "1С:Предприятие" с использованием внешней компоненты ROM-Mail.

 

//функция выполняет отправку электронного сообщения с использованием внешней компоненты ROM-Mail

Процедура ОтправитьПочту()

     Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда

          Сообщить("Не удалось загрузить внешнюю компоненту ROM-Mail.dll");

          Возврат;

     КонецЕсли;

     //подключение

     Почта=СоздатьОбъект("AddIn.AddInMail");

     Почта.СерверОтправки=СокрЛП(СерверОтправки);

     Почта.ПортОтправки=СокрЛП(ПортОтправки);

     Почта.АутентификацияПриОтправке=ФлагАутентификация;

     Если Почта.Соединение=0 Тогда

          Если Почта.Подключиться("Отправка")=0 Тогда

               Сообщить("Не удалось подключиться к почтовому серверу","!");

               Возврат;

          КонецЕсли;

     КонецЕсли;

     //сообщение

     Почта.Важность=0;

     Почта.Кодировка="windows-1251";

     Почта.ТипПисьма=2;

     Почта.АдресОтправителя=СокрЛП(АдресОтправителя);

     Почта.ИмяОтправителя=СокрЛП(ИмяОтправителя);

     //получатели

     Почта.ДобавитьАдрес("АдресПолучателя",СокрЛП(ИмяПолучателя), СокрЛП(АдресПолучателя));

     //вложения

     Для й=1 По Вложения.РазмерСписка() Цикл

          Почта.Вложения=Почта.Вложения+Вложения.ПолучитьЗначение(й)+";";

     КонецЦикла;

     Почта.Тема=СокрЛП(ТемаПисьма);

     Почта.Тело=СокрЛП(ТекстПисьма);

     //отправка

     Если Почта.Соединение=0 Тогда

          Сообщить("Соединение потеряно","!");

     ИначеЕсли Почта.Отправить()=1 Тогда

          Сообщить("Почтовое сообщение отправлено","i");

     Иначе

          Сообщить("Не удалось отправить сообщение","!");

     КонецЕсли;

     //отключение

     Почта.Отключиться();

КонецПроцедуры

По собственному опыту могу сказать, что при отправке электронных сообщений с использованием внешней компоненты ROM-Mail электронные почтовые сообщения уходят мгновенно и, если требуется, абсолютно незаметно для пользователя.

 

По материалам сайта love1c 20

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)