helpf.pro
Регистрация

v7: Отправка почты с помошю внешней компоненты ROM-Mail

sergiymirosh
21.08.2013 11:25Прочитано: 12564
Всем привет! Подскажите в чом может бить проблема. Мне нужно написать процедуру отправки почты.Я пишу етот код . Но не могу соединитьса с сервером

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

//Подключаемся к почте с указанными параметрами
Почта = СоздатьОбъект("AddIn.AddInMail");
Почта.СерверОтправки = "192.168.100.1";
Почта.ПортОтправки = "25";
Почта.Логин = Логин; //при необходимости
Почта.Пароль = Пароль;//при необходимости

Если Почта.Соединение = 0 Тогда
Если Почта.Подключиться("Отправка")=0 Тогда
Сообщить("Не удалось подключиться к почтовому серверу","!");
Возврат;
Конецесли;
Конецесли;
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
21.08.2013 12:05Ответ № 1
(0) sergiymirosh, сервер указан не правильно:

Пример использование ROM-Mail.dll
Код 1C v 7.x
 Процедура Отправить(ИмяФайла,Тема)

//Пытаемся подключить компоненту. она должна находится в каталоге программы или каталоге базы
Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
Сообщить("Не удалось загрузить внешнюю компоненту ROM-Mail.dll");
Возврат;
Конецесли;

//Подключаемся к почте с указанными параметрами
Почта = СоздатьОбъект("AddIn.AddInMail");
Почта.СерверОтправки = "smtp.mail.ru";
Почта.ПортОтправки = "2525";
Почта.Логин = "хххххх@mail.ru"; //при необходимости
Почта.Пароль = "ххххх";//при необходимости


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

//Формируем сообщение
Почта.Важность = 0;
Почта.Кодировка = "windows-1251";
Почта.АдресОтправителя = "хххххххх@mail.ru";
Почта.ИмяОтправителя = "кое-кто";

//указываем получателей письма
Почта.ДобавитьАдрес("АдресПолучателя","",СокрЛП(Кому)); //кому - это реквизит на форме


Почта.Тема = Тема;
Почта.Тело = "тру ля л я";

//Пытаемся отправить
Если Почта.Соединение=0 Тогда
Сообщить("Соединение потеряно","!");
ИначеЕсли Почта.Отправить()=1 Тогда
Сообщить("Почтовое сообщение отправлено","i");
Иначе
Сообщить("Не удалось отправить сообщение","!");
Конецесли;

//Отключаемся
Почта.Отключиться();
КонецПроцедуры


Пример использование DialMail.dll
Код 1C v 7.x
 Процедура ПолучитьПисьма()
Если ЗагрузитьВнешнююКомпоненту("DialMail.dll")=0 Тогда
Сообщить("Не удалось обнаружить компоненту DialMail.dll!");
Возврат ;
КонецЕсли;
Попытка
ПолучениеПочты = СоздатьОбъект("AddIn.POP3");
ZIP = СоздатьОбъект("AddIn.ZIP");
ZIP.ПутьКБиблиотекам = КаталогПрограммы();
SystComm = СоздатьОбъект("AddIn.SystComm");

ПолучениеПочты.ВестиЛогФайл = 0;
Исключение
Сообщить("Не удалось создать объекты из компоненты DialMail.dll!");
Возврат ;
КонецПопытки;

ПолучениеПочты.РабочийКаталог = СокрЛП(Константа.РабочийКаталог);
КаталогДляПрисоединенныхФайлов = СокрЛП(Константа.РабочийКаталог);
СписокФайлов = СоздатьОбъект("СписокЗначений");
СписокПараметров = СоздатьОбъект("СписокЗначений");
СписокПараметров.Установить("Процесс","загрузкапочта");

Если ПолучениеПочты.Подключиться("pop.mail.ru",110,Сокрлп(Константа.ЭлектроннаяПочта),"Пароль")=0 тогда
Предупреждение("Не смогли подключиться к POP3-серверу");
Возврат ;
КонецЕсли;

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

ВсегоПисемНаСервере=ПолучениеПочты.КоличествоПисем;

Сообщить("Всего писем на сервере - "+Строка(ВсегоПисемНаСервере));
Если ВсегоПисемНаСервере = 0 Тогда
ПолучениеПочты.Отключиться();
Возврат;
КонецЕсли;


Сообщить("Получаем письма...!");

Если ПолучениеПочты.ПолучитьвсеПисьма(1,1,0,) = 0 Тогда
Предупреждение("Ошибка получения писем");
Возврат;
КонецЕсли;

ВсегоПисемНаКомпьютере = ПолучениеПочты.КоличествоПисемВРабочемКаталоге;
ПорядковыйНомерСправочника = 0;//для запоминания строки со справочником в СпискеФайлов
Для ш = 1 по ВсегоПисемНаКомпьютере Цикл
ПолучениеПочты.Распаковатьписьмо(ш);
Для СчетчикКолваПрисоединФайлов = 1 По Получениепочты.КоличествоПрисоединенныхФайлов Цикл
ИмяТекущегоФайла = ПолучениеПочты.СохранитьПрисоединенныйФайл(СчетчикКолваПрисоединФайлов,КаталогДляПрисоединенныхФайлов);
Если Найти(ИмяТекущегоФайла,"Spr")<>0 Тогда//это справочник
ПорядковыйНомерСправочника = СписокФайлов.РазмерСписка()+1;//типа следующий будет по списку
КонецЕсли;
//проверим на архив
Если Найти(ИмяТекущегоФайла,".zip")<>0 Тогда
ИмяТекущегоФайла = Разархивировать(КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
КонецЕсли;
СписокФайлов.ДобавитьЗначение(ИмяТекущегоФайла);
КонецЦикла;
КонецЦикла;

ПолучениеПочты.ОчиститьРабочийКаталог();
//теперь пройдемся по всем строкам списка
//сначала справочник
Если ПорядковыйНомерСправочника<>0 Тогда
ИмяТекущегоФайла = СписокФайлов.ПолучитьЗначение(ПорядковыйНомерСправочника);
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем справочник...!");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаСПР.ert");
СписокФайлов.УдалитьЗначение(ПорядковыйНомерСправочника);
КонецЕсли;
//теперь грузим все остальные файлы
Для ш=1 По СписокФайлов.РазмерСписка() Цикл
ИмяТекущегоФайла = СписокФайлов.ПолучитьЗначение(ш);
Если Найти(ИмяТекущегоФайла,"prm") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем поступление...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\Загрузкапоступления.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"sps") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем списание...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаСписание.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"opr") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем оприходование...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаОприход.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"per") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем переоценку...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаПереоценка.ert");
КонецЕсли;
КонецЦикла;

Сообщить("Все файлы загружены");
ПолучениеПочты.Отключиться();
КонецПроцедуры

Процедура получает письма в каталог, записывая при этом названия файлов, а потом проходится по ним и загружает сначала справочник (цены и новые элементы), потом все документы (Поступление, списание, оприходование, переоценку). ZIP - это компонента zip.dll для архивирования файла справочника, а то когда скорость интернета маленькая - грузит мин 20.
E_Migachev
21.08.2013 12:11Ответ № 2
+ Последняя версия ROM-Mail.dll (1.4.1) + ALS-описание + ini-файл Скачивать файлы может только зарегистрированный пользователь!
+ Примеры Использования Скачивать файлы может только зарегистрированный пользователь!
Код 1C v 7.x
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Пример отправки сообщения в формате HTML с картинками.
// Данная версия внешней компоненты ROM-Mail напрямую не поддерживает
// Content-type: multipart/related
// Но проблема отображения картинок в теле сообщения все же решается.
// 1) Удаляем путь к файлу картинки в исходном тексте HTML
// 2) Включением файл картинки в сообщение как обычное вложение
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Процедура Сформировать()
Флаг=0;
Попытка
Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
Сообщить("Не удалось загрузить ROM-Mail.dll");
Возврат;
КонецЕсли;
Исключение
Возврат;
КонецПопытки;

ВК=СоздатьОбъект("AddIn.AddInMail");
ВК.СерверОтправки=СокрЛП(СерверОтправки);
ВК.ПортОтправки=СокрЛП(ПортОтправки);
ВК.Логин=СокрЛП(Логин);
ВК.Пароль=СокрЛП(Пароль);
ВК.АутентификацияПриОтправке=флАутентификацияПриОтправке;
Если ВК.Подключиться("Отправка")=0 Тогда
Предупреждение("Не удалось подключиться к серверу!");
Возврат;
КонецЕсли;
ВК.АдресОтправителя=СокрЛП(АдресОтправителя);
ВК.ИмяОтправителя=СокрЛП(ИмяОтправителя);
ВК.АдресПолучателя=СокрЛП(АдресПолучателя);
ВК.Тема=СокрЛП(Тема);
ВК.Тело="";
ВК.Вложения=СокрЛП(Вложения);
ВК.Кодировка="windows-1251";
ВК.ТипПисьма=2;
ВК.Тело=СокрЛП(Тело);

Если ВК.Отправить()=1 Тогда
Предупреждение("Сообщение отправлено!");
Иначе
Предупреждение("Не удалось отправить сообщение!");
КонецЕсли;
ВК.Отключиться();
КонецПроцедуры

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Процедура ПриОткрытии()

//
// Чтобы картинка отображалась в теле письма - цепляем ее как вложение.
// Ссылка на картинку в исходном коде html-файла не должна содержать пути.
// Т.е. <img src=""xRom.gif"" height=""40"" width=""40"" alt=""xRom.gif"" border=""0"">

СерверОтправки = "192.168.1.11";
ПортОтправки = "25";
ИмяОтправителя="Пупкин Василий";
АдресОтправителя="pupkin@kiev.ua";
АдресПолучателя="Вася Пупкин <pupkin@kiev.ua>; Василиса Пупкина<pupkina@kiev.ua>";
Тема="ВК. Пример отправки почты ROM-Mail";
Тело="текст сообщения";

ПутьЕРТ="";ИмяЕРТ="";
РасположениеФайла(ПутьЕРТ,ИмяЕРТ);
Вложения=ПутьЕРТ+"xRom.gif";
флАутентификацияПриОтправке=1;
КонецПроцедуры

//=================================================================
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Процедура ВыбратьВложения()
Имя=""; Каталог="";
Если ФС.ВыбратьФайл(0,Имя,Каталог,"Выбор файла вложения","Все(*.*)|*.*")=1 Тогда
Вложения=СокрЛП(Вложения)+?(ПустоеЗначение(Вложения)=0,";","")+Каталог+Имя;
КонецЕсли;
КонецПроцедуры
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sergiymirosh
21.08.2013 12:27Ответ № 3
Вот написал такую процедуру отправки, и всеравно не могу подсоединитьса к серверу
Код 1C v 7.x
 Процедура Послать1(Емайл,Заг, Файл)  Экспорт	
Если ЗагрузитьВнешнююКомпоненту( "ROM-Mail.dll") = 0 Тогда
Сообщить("Не вдалось загрузити зовнішню компоненту ROM-Mail.dll ");
Возврат;
КонецЕсли;

//Подключаемся к почте с указанными параметрами

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

Почта1.СерверОтправки ="ns.gng.ua";
Почта1.ПортОтправки = "465";
Почта1.Логин = "1c_gosp@gng.ua";
Почта1.Пароль = "1c_gosp12";
Почта1.АутентификацияПриОтправке =1;

//Если подключение не удачное прерываем обработку

Если Почта1.Соединение = 0 Тогда
Если Почта1.Подключиться("Отправка") = 0 Тогда
Сообщить(" Не вдалось підключитись до поштового сервера!");
Возврат;
КонецЕсли;
КонецЕсли;

//Формируем сообщение
Почта1.Важность = 0;
Почта1.Кодировка = "windows-1251";
Почта1.ТипПисьма = 2;
Почта1.АдресОтправителя = СокрЛП(Константа.ЕлектроннаяПочОтправителя);
Почта1.ИмяОтправителя="Серий";


//указываем получателей письма

Почта1.ДобавитьАдрес("Емайл","",СокрЛп(Емайл));
//Почта1.ДобавитьАдрес("Емайл1","Емайл1",Емайл);

//если необходимо добавляем вложения
Почта1.Вложения = Файл;
Почта1.Тема=Заг;


//Пытаемся отправить
Если Почта1.Соединение =0 Тогда
Сообщить("Соединение потеряно");
ИначеЕсли Почта1.Отправить =1 Тогда
Сообщить("Сообщение отправлено");
иначе
Сообщить("не вдалось відправити повідомлення");
КонецЕсли;


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

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

Изменено 21.08.13 12:39:45
E_Migachev
21.08.2013 12:38Ответ № 4
smtp сервер и порт точно правильные?
файервол/брандмауен не блокирует?
sergiymirosh
21.08.2013 12:45Ответ № 5
админа только шо справшивал, он говорит все правильно і ничиво не блокирует.А может бить проблема через proxy server?
E_Migachev
21.08.2013 13:13Ответ № 6
Может и прокси виновата
sergiymirosh
21.08.2013 13:24Ответ № 7
а не подскажеш, работаэт ли Внешняя Компонента "ROM-Mail.dll" с прокси?
E_Migachev
21.08.2013 13:32Ответ № 8
честно говоря не знаю, я ее настраивал пару лет назад, но там было без прокси - все работало) используйте стандартную v7plus.dll
sergiymirosh
21.08.2013 13:46Ответ № 9
Может хто подскажет процедуру отправки прочты с помошю DialMail.dll ?
Изменено 21.08.13 14:28:38
sergiymirosh
21.08.2013 13:48Ответ № 10
у меня через v7plus.dll идет основная отправка почты, а надо зделать отправку не с основной, а с техничиской )
sergiymirosh
27.08.2013 15:18Ответ № 11
Может хто подскажет процедуру отправки прочты с помошю DialMail.dll ?
--------------------------------------------------------------------------------
sergiymirosh
11.09.2013 14:21Ответ № 12
Всем привет, есть проблемка.Делаю отправку почты с помошю етой ддл-ки,соединение с сервером эсть, но выдайот сообщение :"Не удалось отправить сообщение". Подскажите, где может бить причина?
sergiymirosh
18.09.2013 11:25Ответ № 13
Вопрос закрыт!
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.