1С Почта


 

1С и Почта

post-11-150x150.png

Долго искал, но ничего внятного и не глючного не находил, в итоге обратился к ИТС.
Все описанное ниже предполагает использование стандартной библиотеки v7plus.dll, входящей в комплект поставки 1С:Предприятия 7.7.

И как всегда, все гениально и просто, за исключением, что все это нормально работает только если вы пользуетесь Microsoft Outlook Express или Microsoft Outlook. Т.е. например, на The Bat это не проканает. Итак,

1С и почта в 1С: Предприятие 7.7.

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+ "v7plus.dll")= 0  Тогда
Если ЗагрузитьВнешнююКомпоненту("v7plus.dll")=0 Тогда
Предупреждение("Не удалось обнаружить компоненту V7Plus.dll!");
Возврат;
КонецЕсли;
КонецЕсли;
// создание ссылки на электронную почту
Попытка
ЭП=СоздатьОбъект("AddIn.V7Mail");
Исключение
Предупреждение("Не удалось создать объект ""V7Mail""!");
Возврат;
КонецПопытки;
ЭП.Подключиться();
// создание письма
ЭП.НовоеСообщение();
ЭП.Заголовок="Тест";
ЭП.Текст="Сообщение";
ЭП.ДобавитьАдрес("egorychev@efrlab.ru");
ЭП.ДобавитьФайл("c:\testfile.txt");
Попытка
ЭП.Послать(0);
Исключение
Сообщить("Не удалось отправить сообщение!");
ЭП.Отключиться();
Возврат;
КонецПопытки;
ЭП.Отключиться();

1С и почта в 1С: Предприятие 8

В 1С Предприятие 8 с почтой проблем поменьше и имеет уже встроенные функции для отправки сообщений, импорта писем из почтового клиента в справочник или другой объект конфигурации, работы с MAPI, SMTP или POP3.

При работе с почтой разделяют два способа доступа к почтовому ящику, почтовому клиенту:
Объект «Почта» и объект «Интернет почта», каждый из объектов имеет свои достоинства:


Все реквизиты входящих писем сохраняются в соответствующие поля табличного поля, вложения сохраняются в каталог временных файлов, а имена вложений в реквизит табличного поля. Для более удобного хранения вложений писем, 1С 8 имеет тип «Хранилище значения», который позволяет хранить двоичные данные, далее при получении сообщений объектом «ИнтернетПочта» рассмотрим возможность хранения в «Хранилище значения».

//1С почта
Получатели = "";
Файлы = "";
// Как и в работе с 7.7 все это работает
// только с Microsoft Outlook Express или
// Microsoft Outlook
Почта = Новый Почта;
// Более подробно о "Подключиться()" можно прочитать
// в синтакс-помошнике
Почта.Подключиться();
// Выбираем все сообщения
СообщенияСписок = Почта.Выбрать(Ложь,Ложь);
Для каждого Сообщение Из СообщенияСписок Цикл
//Добавляем строку в табличную часть
ТабСтрока = ТабличноеПоле.Добавить();
//Получателей может быть много
Для каждого ПолучательИз Сообщение.Получатели Цикл
Получатели = Получатели.Пользователь +" <" + Получатель.Адрес+ " >";
КонецЦикла;
ТабСтрока.Кому=Получатели;
Попытка
ТабСтрока.ОтКого= Сообщение.Отправитель. Адрес;
Исключение
ТабСтрока.ОтКого=Сообщение.Отправитель;
КонецПопытки;
ТабСтрока.Тема = Сообщение.Тема;
ТабСтрока.Текст = Сообщение.Текст;
ТабСтрока.Дата = Сообщение.ДатаПолучения;
// Перебираем вложения письма, их
// тоже может быть много
Для каждогоВложениеИзСообщение.ВложенияЦикл
Вложение.Данные.Записать(Вложение.Наименование);
Файлы=Файлы+Вложение.Наименование+", ";
КонецЦикла;
ТабСтрока.ПутьВложения = Файлы;
//Конец 1С почта
КонецЦикла;

Скачать пример

Для полного понимания эффективности 1С: Предприятие 8, рекомендую посмотреть как устроено все в «Управление торговлей». Там хранение вложений имеет тип «Хранилище значения», который позволяет хранить двоичные данные.


Отправка почты в 1С: Предприятие 8

Отправка сообщения происходит так же как и в прошлом примере с той разницей, что надо подготовить сообщение к отправке

// Создание сообщения 1с почта
// Добавляем текст, тему, получателя,
// вложение
Сообщение = Новый ПочтовоеСообщение;
Сообщение.Текст="текст сообщения";
Сообщение.Отправитель="exchange_center@efrlab.ru";
Сообщение.Тема="Тема сообщения";
Сообщение.Получатели.Добавить(exchange_office@efrlab.ru);
Сообщение.Вложения.Добавить(Новый ДвоичныеДанные("C:\file.jpg"),"C:\file.jpg");
Почта=Новый Почта;
// подключаемся без параметров, к клиенту // установленному по умолчанию в системе Почта.Подключиться(,);
Попытка
//Пытаемся послать письмо
Почта.Послать(Сообщение,Истина);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
//отключение 1с почта
Почта.Отключиться();

В MS Outlook встроена защита от несанкционированного доступа к адресной книге и базе почтовых сообщений, и защита от несанкционированной отправки электронных писем через службы Outlook.
В Outlook 2003 система безопасности срабатывает не только при попытке получить адрес отправителя письма, но даже при попытке получить его текст. В действительности защита выражается в показываемом пользователю окне системы безопасности при обращении к некоторым объектам и свойствам объектов Outlook и предлагает открыть доступ на определенное время.

1С почта. Получение списка сообщений объектом «ИнтернетПочта»

Перед подключением к почтовому серверу, для объекта «ИнтернетПочта» необходимо заполнить данные Профиля учетной записи, и затем передать эти данные в метод «Подключиться».

ПрофильПочты = Новый ИнтернетПочтовыйПрофиль;
// SMTP сервер
ПрофильПочты.АдресСервераSMTP="smtp.mail.ru";
// Порт SMTP сервера
ПрофильПочты.ПортSMTP=2525;
// POP3 сервер
ПрофильПочты.АдресСервераPOP3="pop.mail.ru";
// Порт POP3 сервера
ПрофильПочты.ПортPOP3 =110;
// Пароль к почтовому ящику
ПрофильПочты.Пароль=12345678;
// Пароль пользователя для SMTP сервера
ПрофильПочты.ПарольSMTP =12345678;
// Логин пользователя
ПрофильПочты.Пользователь="user";
// Логин пользователя для SMTP сервера
ПрофильПочты.ПользовательSMTP="user";
// Время ожидания выполнения операции в секундах
ПрофильПочты.ВремяОжидания=50;
Почта= Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ПрофильПочты);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Заголовки = Почта.ПолучитьЗаголовки();
Если Заголовки.Количество()=0 Тогда
Предупреждение("В почтовом ящике нет входящих сообщений!", ,"Нет сообщений");
КонецЕсли;
// Загрузка сообщений в список 1с почта
Сообщения=Почта.Выбрать(Истина, Заголовки);
// Внимание! При прохождениии по этому циклу
// сообщения с сервера удаляются
Для каждого Сообщение Из Сообщения Цикл
ТабСтрока=ТабличноеПоле.Добавить();
ТабСтрока.Дата=Сообщение.ДатаОтправления;
ТабСтрока.ОтКого=Сообщение.Отправитель.Пользователь+" <"+Сообщение.Отправитель.Адрес+"> ";
ТабСтрока.Тема=Сообщение.Тема;
// Перебираем получателей сообщения КомуВходящие="";
Для каждого Получатель Из Сообщение.Получатели Цикл
КомуВходящие=КомуВходящие+Получатель.Пользователь+" <"+Получатель.Адрес" >";
КонецЦикла;
ТабСтрока.Кому=КомуВходящие;
// Перебираем тексты сообщения
ТекстВходящие="";
Для каждого ТекстСообщения Из Сообщение.Тексты Цикл
ТекстВходящие=ТекстВходящие+ ТекстСообщения.Текст;
КонецЦикла;
ТабСтрока.Текст=
ТекстВходящие;
// Перебираем вложения письма
Файлы="";
Для каждого Вложение Из Сообщение.Вложения Цикл
Вложение.Данные.Записать(Вложение.Наименование);
Файлы=Файлы+Вложение.Наименование);
КонецЦикла;
ТабСтрока.ПутьВложения=Файлы;
КонецЦикла;
// Отключение
Почта.Отключиться();

Скачать пример

На этом пока все.
С уважением, ЛИС
09.04.2010



Поделитесь с друзьями
Оставьте голос
Так же будет полезно узнать


Возврат к списку