2010
24
августа
Отпрявляем почту из 1С
Автор статьи: admin | Просмотров: 3,451 | Комментировать
При написании конфигурации-робота, которая висит в трее и выполняет необходимые обработки по расписанию встала необходимость отслеживать ошибки, возникающие проблемы, записывать в файл и отправлять на почту. Можно конечно использовать для этой цели (отправка почты) средства 1cpp.dll, используя встроенный почтовый клиент, но в этом случае будет запускаться сам почтовый клиент, например outlook express, что не приемлемо, ибо за компом еще сидит оператор. Поэтому я решил использовать внешнюю компоненту DialMail.dll. Компонента Dialmail.dll может многое, в том числе отправлять и принимать почту, работать с FTP – серверами, упаковывать файлы и пр. Меня же интересует только функция отправки писем с вложениями.
Итак, качаем dialmail. Архив содержит саму компоненту dialmail.dll, примеры работы в 1С, файлы для синтаксис-помощника в 1С. В принципе вся необходимая информация содержится в справке к компоненте, поэтому я приведу пример кода для быстрой вставки для конкретного случая – отправка писем из 1С.
Далее по шагам как использовать dialmail для отправки почты.
1. Копируем dialmail.dll в каталог базы данных. ( в принципе можно скопировать в любое место, из которого потом в коде 1С будем подключать). 2. Копируем файл dialmail.als в каталог C:\Program Files\1Cv77.adm\BIN. Это необходимо для помощи с синтаксис – помощнике.
Предварительные приготовления завершены, теперь к делу.
3. Заводим почтовый ящик или готовим настройки существующего
Я создал почтовый ящик на mail.ru. Этот бесплатный сервис вполне подходит для наших целей.
Нам понадобятся адрес smtp сервера, логин и пароль от почты.
4. Подключаем компоненту dialmail.dll
Обычно это делается при открытии формы обработки:
Процедура ПриОткрытии()
//.......................
Путь = КаталогИБ() + "DialMail.dll";
Если ЗагрузитьВнешнююКомпоненту(Путь) = 0 Тогда Сообщить("Неудачная попытка загрузить DialMail.dll"); КонецЕсли;
//.........................
КонецПроцедуры;
5. Заполняем реквизиты и оправляем почту.
Процедура ОтправитьПочту()
ОтправкаПочты = СоздатьОбъект("AddIn.SMTP");
ОтправкаПочты.РабочийКаталог=СокрЛП(КаталогИБ());
ОтправкаПочты.УстановитьКодировкуИСпособКодирования(14, 1);
ОтправкаПочты.MakeContentDescriptionTag = 0;
ОтправкаПочты.ПочтоваяПрограмма = "Имя почтовой программы";
//В моем случае ошибки пишутся в отдельный каталог в текстовые файлы, имена которых соответствуют дате.
ВыбФайл = СокрЛП(КаталогОшибок) +"\"+ СокрЛП(ДатаЧисло(ТекущаяДата())) + СокрЛП(ДатаМесяц(ТекущаяДата()))+ СокрЛП(ДатаГод(ТекущаяДата())) + ".txt";
//имя файла - вложения должно быть в кавычках.
ВыбФайл = """" + ВыбФайл + """";
// От кого, Кому, Копии - это адреса почты.
ОтправкаПочты.СоздатьПисьмо(ОтКого,Кому,СокрЛП(СпрПочта.Копии),"Ошибки обмена в " + СокрЛП(Константа.Магазин.Наименование),,"Данное письмо сформировано автоматически. Смотри вложение",СокрЛП(ВыбФайл));
Если ОтправкаПочты.Подключиться("smtp.mail.ru","25",ИмяПользователя,Пароль)=0 тогда
Сообщить("Не смогли подключиться к SMTP-серверу");
КонецЕсли;
Если ОтправкаПочты.ОтправитьВсеПисьма(0,1,0) = -100 Тогда
Сообщить("Успешно отправлено");
КонецЕсли;
КонецПроцедуры
Вот и все. Почта отправляется на ура. Все легко и просто.
Скачать внешнюю компоненту DialMail.dll
Рубрики: 1С

