Книга знаний

1С:Предприятие / v8 / Объекты конфигурации

v8: Практическая работа с почтой

Как 1с работает с различными почтовыми клиентамиАвтор статьи: 1CLama | Редакторы: romix
Последняя редакция №4 от 09.09.08 | История
URL: http://kb.mista.ru/article.php?id=629

Ключевые слова: почта, e-mail, почтовые сообщения, Бат, Аутлук, Аутгюк, The Bat, Outlook, Mozilla Thunderbird


В 1с есть возможность отправки сообщений автоматически(из почтового клиента), не клацая на кнопочку отправить. У МЕНЯ 1С АВТОМАТИЧЕСКИ РАБОТАЛ ТОЛЬКО С БАТОМ. Вот такой код:

Попытка
    ОтправитьПоПочте2(ТекСтрока); // работает с Батом
Исключение
    Попытка
    ОтправитьПоПочте1(ТекСтрока); // работает с Аутлуком, но переспрашивает при отправке
    Исключение
        Сообщить_и_записать("Ошибка при отправке почты - "+ОписаниеОшибки(),СтатусСообщения.Важное);
    КонецПопытки;
КонецПопытки;

Процедура ОтправитьПоПочте1(ТекСтрока)
    Почта = Новый Почта;
    Сообщение = Новый ПочтовоеСообщение;
    //Работает с Аутглуком, но переспрашивает при отправке
    //не работает с Батом 3.60
    Почта.Подключиться("name@mysite.dp.ua","password");
   
    Сообщение.Вложения.Добавить(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование));
    Сообщение.Получатели.Добавить(ТекСтрока.филиал.email);
    Сообщение.Тема ="Проигнорированные документы в офисе. Письмо сгенерированно роботом";
    Сообщение.Текст="Проверьте, будь ласка эти документы ПОСЛЕ получения обновления из офиса. Ваши изменения в этих документах не попали в базу. Откройте прикрепленный файл";
    Почта.Послать(Сообщение);
    Почта.Отключиться();
    УдалитьФайлы(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование));
КонецПроцедуры           

Процедура ОтправитьПоПочте2(ТекСтрока)
    ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль;
    ПочтовыйПрофиль.АдресСервераPOP3   = "pop3.mysite.dp.ua";
    ПочтовыйПрофиль.АдресСервераSMTP   = "smtp.mysite.dp.ua";
    ПочтовыйПрофиль.ПортSMTP           = 25;
    ПочтовыйПрофиль.ПортPOP3           = 110;
    ПочтовыйПрофиль.Пользователь       = "name";
    ПочтовыйПрофиль.Пароль             = "password";
    ПочтовыйПрофиль.ВремяОжидания      = 60;
       
    Сообщение = Новый ИнтернетПочтовоеСообщение ;
    Сообщение.Вложения.Добавить(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование));
    Сообщение.Получатели.Добавить(ТекСтрока.филиал.email);
    Сообщение.Тема ="Проигнорированные документы в офисе. Письмо сгенерированно роботом";
    Сообщение.ИмяОтправителя="Обмен";
    Сообщение.Отправитель="name@mysite.dp.ua";
       
    Текст = Сообщение.Тексты.Добавить("Проверьте, будь ласка эти документы ПОСЛЕ получения обновления из офиса. Ваши изменения в этих документах не попали в базу. Откройте прикрепленный файл");
    Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
   
    Почта = Новый ИнтернетПочта();
    Почта.Подключиться(ПочтовыйПрофиль);
    Почта.Послать(Сообщение);
    Почта.Отключиться();
    УдалитьФайлы(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование));
КонецПроцедуры       



ВСЕ БЫ ХОРОШО, НО У МЕНЯ НЕ ПОЛУЧИЛОСЬ ЗАСТАВИТЬ 1с РАБОТАТЬ С IMAP-м (точнее, Бат не работал с IMAP ).
Вот так 1с работает с Мозилой Сундербердом (который хорошо поддерживает IMAP):

ПутьМозиллы = """C:/Program Files/Mozilla Thunderbird/thunderbird.exe""";
    Текст = Новый ЗаписьТекста(КаталогОбмена + "sendfiletofilial"+Строка(ТекСтрока.филиал.наименование)+".bat", КодировкаТекста.OEM);
    Текст.ЗаписатьСтроку("@echo off");
    Текст.ЗаписатьСтроку("@echo Отправка проигнорированных писем на филиал"+Строка(ТекСтрока.филиал.наименование));
    СтрокаЗапуска = " -compose to='"+ТекСтрока.филиал.email+"',cc='name@mysite.dp.ua',subject=""Проигнорированные документы в офисе. Письмо сгенерированно роботом"",body=""Проигнорированные документы в офисе. Письмо сгенерированно роботом"",attachment=""file://";
    Файл = """"+ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)+"""";
    Текст.ЗаписатьСтроку(ПутьМозиллы+СтрокаЗапуска +Файл);
    Текст.ЗаписатьСтроку("del "+Файл);
    Текст.Закрыть();
    ЗапуститьПриложение(КаталогОбмена + "sendfiletofilial"+Строка(ТекСтрока.филиал.наименование)+".bat",КаталогОбмена)


Получение почты



Процедура КнопкаВыполнитьНажатие(Кнопка)
  Почта = Новый ИнтернетПочта;

    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = "192.168.0.2";

    Профиль.Пользователь = "romix";
    Профиль.Пароль = "ТутНапишитеПароль";

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

    МассивПисем = Почта.Выбрать(Ложь);

    Для Каждого Письмо из МассивПисем Цикл
        Сообщить("Получено письмо с заголовоком: "+Письмо.Тема);
        Для Каждого Вложение из Письмо.Вложения Цикл
            Сообщить("Вложение: "+Вложение.ИмяФайла);
            Вложение.Данные.Записать("c:\tempdata\"+Вложение.ИмяФайла);
        КонецЦикла;    
        Для Каждого Текст из Письмо.Тексты Цикл
            Сообщить("Текст: "+Текст.Текст);
            Текст.Данные.Записать("c:\tempdata\ТекстСообщения.txt");
        КонецЦикла;    
    КонецЦикла;

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


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика