Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Внешняя компонента ROM-Mail          
igmig65 Подменю пользователя
сообщение 20.03.09, 13:29
Сообщение #1

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 590
Из: Донецкая обл
Спасибо сказали: 165 раз
Рейтинг: 0

Внешняя компонента 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");
Иначе
Сообщить("Не удалось отправить сообщение","!");
КонецЕсли;
//отключение
Почта.Отключиться();
КонецПроцедуры

//процедура выполняет получение файла автообмена
Процедура Почта_Получить(База)
//настройка
П=СоздатьОбъект("AddIn.AddInMail");
П.СерверПриема=СокрЛП(База.СерверПриема);
П.ПортПриема=СокрЛП(База.ПортПриема);
П.Логин=СокрЛП(База.ПочтаЛогин);
П.Пароль=СокрЛП(База.ПочтаПароль);
П.ОставлятьНаСервере=1;
П.ПоказыватьПредупреждения=0;
П.КаталогВложений=СокрЛП(База.Импорт)+"\";
//подключение
Если П.Подключиться("Прием")=0 Тогда
Сообщить("Не удалось подключиться к почтовому серверу для получения почты","!");
Возврат;
КонецЕсли;
//фильтр
Фильтр=ВРег(СокрЛП(База.Удаленная)+"-"+СокрЛП(База.Текущая));
//сообщения
Для й=1 По П.КоличествоСообщений() Цикл
Если П.ПолучитьЗаголовок(й)=1 Тогда
Если ВРег(П.Тема)=Фильтр Тогда
Если П.ПолучитьТело(й)=1 Тогда
//пометка на удаление
П.ПометитьНаУдаление(й);
//файлы
Для ф=1 По П.КоличествоФайлов() Цикл
Файл=П.КаталогВложений+П.ПолучитьФайл(ф);
Сообщить("Получен файл: "+Файл);
//сохранение
П.СохранитьФайл(ф,);
КонецЦикла;
Иначе
Сообщить("Не удалось получить тело сообщения "+й,"!");
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Не удалось получить заголовок сообщения "+й,"!");
КонецЕсли;
КонецЦикла;
//отключение
П.Отключиться();
КонецПроцедуры

//процедура выполняет отправку файла автообмена
Процедура Почта_Отправить(База)
//настройка
П=СоздатьОбъект("AddIn.AddInMail");
П.СерверОтправки=СокрЛП(База.СерверОтправки);
П.ПортОтправки=СокрЛП(База.ПортОтправки);
П.Логин=СокрЛП(База.ПочтаЛогин);
П.Пароль=СокрЛП(База.ПочтаПароль);
П.АутентификацияПриОтправке=База.Аутентификация;
//подключение
Если П.Подключиться("Отправка")=0 Тогда
Сообщить("Не удалось подключиться к почтовому серверу для отправки почты","!");
Возврат;
КонецЕсли;
//создание
П.АдресПолучателя=СокрЛП(База.АдресПолучателя);
П.Тема=ВРег(СокрЛП(База.Текущая)+"-"+СокрЛП(База.Удаленная));
П.Тело="
|Отправитель: "+СокрЛП(База.Текущая)+" "+База.Наименование+"
|Получатель: "+СокрЛП(База.Удаленная);
//вложения
Каталог=СокрЛП(База.Экспорт)+"\";
Файл=ФС.НайтиПервыйФайл(Каталог+"*.*");
Пока ПустаяСтрока(Файл)=0 Цикл
//добавление
Если Лев(Файл,1)<>"." Тогда
Сообщить("Вложен файл: "+Каталог+Файл);
П.Вложения=П.Вложения+Каталог+Файл+";";
КонецЕсли;
//следующий
Файл=ФС.НайтиСледующийФайл();
КонецЦикла;
//отправка
Если ПустаяСтрока(П.Вложения)=0 Тогда
Если П.Отправить()=0 Тогда
Сообщить("Не удалось отправить почту","!");
КонецЕсли;
КонецЕсли;
//отключение
П.Отключиться();
КонецПроцедуры


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

Скачать внешнюю компоненту ROM-Mail: Прикрепленный файл  ROM_Mail.rar ( 305.65 килобайт ) Кол-во скачиваний: 422


Сообщение отредактировал Vofka - 20.03.09, 16:17
Причина редактирования: Добавил немножко :)

Mirosh Подменю пользователя
сообщение 11.09.13, 16:36
Сообщение #2

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0


 ! 

Правила, п.13
 


 ! 

Правила, п. 9, 24
 


Сообщение отредактировал logist - 11.09.13, 16:38

Topik Подменю пользователя
сообщение 18.11.13, 15:11
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день, у меня такая проблема, PDF файл создается все нормально, потом запрашивает на какой эл.адрес отправить pdf файл, я указываю пишет, что идет соединение и зависает... если указываю порт 25 то выдает ошибку (Не удалось отправить сообщение из-за сбоев на почтовом сервере, а так же проверьте почт. адрес!)
помогите пожалуйста help.gif
    Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
        Сообщить("Не удалось загрузить внешнюю компоненту ROM-Mail.dll. Почтовые сообщения не формируются !!!","!");
        Возврат;
    КонецЕсли;  
    Почта=СоздатьОбъект("AddIn.AddInMail");
    Почта.СерверОтправки="smtp.gmail.com";    
    Почта.ПортОтправки="465";
    Если Почта.Соединение = 0 Тогда
           Если Почта.Подключиться("Отправка")=0 Тогда
               Сообщить("Не удалось подключиться к почтовому серверу","!");
               Возврат;
        КонецЕсли;
    КонецЕсли;
    Почта.Важность=0;
    Почта.Кодировка="windows-1251";
    Почта.ТипПисьма=2;  
    Почта.АдресОтправителя="testtopik@gmail.com";
    Почта.Логин= "test";
    Почта.Пароль= "123456789";
    Почта.АдресПолучателя= АдрПчт;
        Почта.Вложения = КаталогИБ()+ "ExtForms\EOut\"+ Фл;
    Почта.Тело = СокрЛП("Здравствуйте"+ПолноеИмяПользователя()+".");
    Если Почта.Соединение=0 Тогда
        Если Почта.Подключиться("Отправка")=0 Тогда
            Сообщить("Не удалось подключиться к почтовому серверу. ","!");
        КонецЕсли;
    КонецЕсли;  
    Если Почта.Соединение=0 Тогда
        Сообщить("Соединение потеряно","!");
    ИначеЕсли  Почта.Отправить()=1 Тогда
        Сообщить("Почтовое сообщение отправлено","i");
    ФС.УдалитьФайл(КаталогИБ()+ "ExtForms\EOut\"+Фл+".pdf");
            сообщить ("Успешно удален отправленный в "+ТекущееВремя()+" файл "+ Фл+".pdf");
            ВремяПисьма =СокрЛП(ТекущаяДата())+" в " +СокрЛП(ТекущееВремя())+ "/"+ СокрЛП(АдрПчт);
    Иначе
        Сообщить("Не удалось отправить сообщение возможно из-за сбоев на почтовом сервере.","!");
        Предупреждение("Не удалось отправить сообщение из-за сбоев на почтовом сервере, а так же проверьте почт. адрес!");
    КонецЕсли;
    ИмяФайлаКОтправке = "";
    Фл= "";
    АдрПчт="";
    //Отключаемся
        Почта.Отключиться();

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

logist Подменю пользователя
сообщение 18.11.13, 15:15
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2527 раз
Рейтинг: 1589.4

Цитата(igmig65 @ 20.03.09, 14:29) *
Почта.Вложения=Почта.Вложения+Вложения.ПолучитьЗначение(й)+";";

Цитата(Topik @ 18.11.13, 16:11) *
Почта.Вложения = КаталогИБ()+ "ExtForms\EOut\"+ Фл;

Может в конце добавить ";"?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Acid Подменю пользователя
сообщение 18.11.13, 15:18
Сообщение #5

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2099
Из: Занзибар
Спасибо сказали: 369 раз
Рейтинг: 252.6

А при чем тут gmail? Указываете свой почтовый сервер.


Signature

Документируйте Код! мать вашу...


Topik Подменю пользователя
сообщение 18.11.13, 15:53
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 18.11.13, 15:18) *
а нельзя использовать gmail?



Цитата(logist @ 18.11.13, 15:15) *
Может в конце добавить ";"?

не помогло sad.gif

anatol1c Подменю пользователя
сообщение 08.10.21, 13:06
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 10
Из: Погребище
Спасибо сказали: 2 раз
Рейтинг: 2

Цитата(igmig65 @ 20.03.09, 14:29) *
Внешняя компонента ROM-Mail

Добрый день, ВСЕМ.
Сервак 2008.
Вчера в 16:00 на 2 серверах обновременно перестала работать отправка почты с 1с 7.7.

Айтишники "гонят", что виновата 1с 7.7.

Никто текст не менял.
Если Почта.Подключиться("Отправка")=0 Тогда
    спФормы.Установить("Отправлено",0);
    Сообщить("Не удалось подключиться к почтовому серверу="+СокрЛП(Строка(Почта.СерверОтправки)),"!");


Какие будут Мнения?

Сейчас полезу в Укр.нет. настраивать посмотреть настройки, чтобы проверить есть ли соединение с сервером.

Сообщение отредактировал Vofka - 08.10.21, 13:39

mut Подменю пользователя
сообщение 11.10.21, 9:20
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 169
Из: Новая Каховка
Спасибо сказали: 156 раз
Рейтинг: 180

anatol1c @ 08.10.21, 14:06 * ,
Возможно, те-же проблемы, что у некоторых сайтов - с 1 числа колбасит из-за закончившегося сертификата. Где-то кеш обновился и теперь валидность не подтверждается. Конечно, это если у вас почта по ssl.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 30.11.21, 8:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!