8.х Работа с почтой

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andrenko, 9 ноя 2009.

  1. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Ни когда е работал с почтой...
    Что имеем: smtp, pop серевра, логины, пароли, способы аунтефикации, письмо в формате txt, html, адреса.
    Привидите, плс., пример отправки/забора почты.
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26


    Есть еще
  3. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    привидите пример, плс.
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Пример из живой обработки забирающей почту с яндекса.
    Код:
    // ДобавитьОтладочноеСообщение - процедура выводящая в отдельную табличку сообщения отладки на 
    //      случай, если нужно посмотреть, что происходило. Оставлены вместо комментариев.
    // МассивСообщений - переменная обработки, поэтому получить к ней доступ можно из любой процедуры
    
    Процедура КнопкаПолучитьПочтуНажатие(Элемент)
    Профиль = новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = "pop3.yandex.ru";
    Профиль.Пользователь = "111";
    Профиль.Пароль = "22222";
    ПРофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
    
    Попытка
    ДобавитьОтладочноеСообщение("Попытка подключения к серверу почты "+Профиль.АдресСервераPOP3,"");
    Состояние("Подключение к серверу "+Профиль.АдресСервераPOP3);
    Почта = Новый ИнтернетПочта;
    Почта.Подключиться(Профиль);
    
    МассивСообщений = Новый Массив;
    ДобавитьОтладочноеСообщение("Чтение почтовых сообщений","");
    Состояние("Чтение почтовых сообщений...");
    МассивСообщений = Почта.Выбрать(Ложь); // ЛОжь - письма с сервера не удаляются...
    Исключение
    ДобавитьОтладочноеСообщение("Ошибка подключения к серверу ","Остановить");
    ДобавитьОтладочноеСообщение(""+ОписаниеОшибки(),"Остановить");
    Сообщить("Ошибка подключения к серверу!");
    Сообщить(""+ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    Если МассивСообщений.Количество() = 0 Тогда
    ДобавитьОтладочноеСообщение("В почтовом ящике нет сообщений. Прерываем работу.","");
    Сообщить("Почтовый ящик пуст");
    ПолученныеПисьма.Очистить();
    Возврат;
    КонецЕсли;
    ОтобразитьПочтовыеПисьма();
    КонецПроцедуры
    
    Процедура ОтобразитьПочтовыеПисьма()
    ПолученныеПисьма.Очистить();
    Если МассивСообщений.Количество() = 0 Тогда
    Возврат; // почтовых сообщений нету.
    КонецЕсли;
    
    ДобавитьОтладочноеСообщение("Начало отображения сообщений в обработке","");
    МассивСообщенийОбмена = новый Массив;
    
    ИмяФайлаСообщения = "";
    ПолученныеПисьма.Очистить();
    Для Индекс = 0 По МассивСообщений.Количество() - 1 Цикл
    стр = ПолученныеПисьма.Добавить();
    стр.ДатаОтправления = МассивСообщений[Индекс].ДатаОтправления;
    стр.ЗаголовокСообщения = МассивСообщений[Индекс].Заголовок;
    стр.Индекс = Индекс;
    стр.КоличествоВложений = МассивСообщений[Индекс].Вложения.Количество();
    стр.КоличествоТекстов = МассивСообщений[Индекс].Тексты.Количество();
    стр.Размер = МассивСообщений[Индекс].Размер;
    стр.Тема = МассивСообщений[Индекс].Тема;
    КонецЦикла;
    ДобавитьОтладочноеСообщение("Сообщения отображены","");
    
    КонецПроцедуры
    
    
    
  5. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Спасибо, понятно. А отправка?
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Пример из живой обработки отправляющей файлы через ящик на yandex.ru

    Код:
    // отправка почтового сообщения...
    Профиль = новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.yandex.ru";
    Профиль.ПользовательSMTP = "111";
    Профиль.ПарольSMTP = "222222"; // 
    ПРофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Отправитель = "111@yandex.ru";
    Сообщение.Тема = ""+ПрефиксФилиала;
    Сообщение.Получатели.Добавить("yfyiis@mail.ru");
    Сообщение.Тексты.Добавить(ТекстПисьма);
    Сообщение.Вложения.Добавить(ИмяВременногоZiPфайла);
    
    Почта = Новый ИнтернетПочта;
    Попытка 
    Состояние("Отправка почтового сообщения...");
    Почта.Подключиться(Профиль);
    Почта.Послать(Сообщение);
    Предупреждение("Сообщения успешно отправлены!");
    Исключение
    Сообщить("Ошибка соединения с сервером.",СтатусСообщения.ОченьВажное);
    Сообщить(""+ОписаниеОшибки());
    КонецПопытки;
    
    
  7. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Должен отметить, что данные примеры грубы. В том смысле, что во многих типовых конфигурациях есть такой справочник, как "Учетные записи электронной почты" и более правильным подходом было бы использование информации о учетных записях именно из данного справочника, а не использование статических переменных в коде. Поэтому прошу рассматривать данный пример и как пример грубой методической ошибки в написании кода...
  8. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    спасибо! Пробую!
Похожие темы
  1. Dmitrij
    Ответов:
    1
    Просмотров:
    1.483
Загрузка...

Поделиться этой страницей