|
|
|
v7: Отправка почты с вложением из 1С-пример! | ☑ | ||
|---|---|---|---|---|
|
0
Gal4onok
28.10.07
✎
09:11
|
Есть какие нить примеры для отправки писем с вложениями из 1с?
|
|||
|
1
Gal4onok
28.10.07
✎
10:00
|
up
|
|||
|
2
Азат
28.10.07
✎
11:41
|
CDO.Message юзай
|
|||
|
3
DK_L
28.10.07
✎
11:43
|
// Элемент управления Session
SessionCtrl = СоздатьОбъект("MSMAPI.MAPISession"); // Элемент управления Messages MessageCtrl = СоздатьОбъект("MSMAPI.MAPIMessages"); // Открываем сессию SessionCtrl.SignOn(); // Связываем элементы управления, используя идентификатор сессии MessageCtrl.SessionID = SessionCtrl.SessionID; // Подготовиться к отправке сообщения MessageCtrl.Compose(); MessageCtrl.RecipAddress = "grechka@mail.ru"; // Установить тему сообщения MessageCtrl.MsgSubject = "Заголовок тестового письма"; // Заполнить тело сообщения MessageCtrl.MsgNoteText = "Это тестовое письмо"; // Присоединяем к письму два файла MessageCtrl.Attachmentlndex = 0; MessageCtrl.AttachmentPathName = ("C:\filel.txt"); MessageCtrl.Attachmentlndex = 1; MessageCtrl.AttachmentPathName = ("C:\file2.txt"); // Отправить без отображения стандартного диалога отправки сообщения MessageCtrl.Send(0); // Закрываем сессию SessionCtrl.SignOff(); |
|||
|
4
DK_L
28.10.07
✎
11:44
|
SessionCtrl = Новый COMОбъект("MSMAPI.MAPISession");
// Элемент управления Messages MessageCtrl = Новый COMОбъект("MSMAPI.MAPIMessages"); |
|||
|
5
BabySG
28.10.07
✎
11:45
|
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Отправитель = "Крут, как никогда" Письмо.Тема = "Такому же крутому"; Письмо.Получатели.Добавить("васяпупкин(собака)мэйл.ру); Письмо.ИмяОтправителя = "Крутышка"; Письмо.Вложения.Добавить(ИмяФайла); |
|||
|
6
Gal4onok
28.10.07
✎
16:40
|
ок.я отправить отправляю-а как сделать чтобы с ящика в инете скачивался и распоковывался архив в каталог на диске, ну и текстовый файл открывался в 1с.У меня процесс зависает-а потом идет сообщение эл.почты типа "Сервер не отвечает"
|
|||
|
7
BabySG
28.10.07
✎
18:30
|
Код в студию
|
|||
|
8
Gal4onok
28.10.07
✎
21:10
|
Процедура ПолучениеФайлов(Кнопка)
УчетнаяЗаписьКому = ПланыОбмена.РаспределеннаяБаза.ЭтотУзел().УчетнаяЗаписьЭлектроннойПочты; // СоответствиеТекстовЭлектронныхПисем = Новый Массив; МассивУчетныхЗаписей = Новый Массив; МассивУчетныхЗаписей.Добавить(УчетнаяЗаписьКому); // ПолучениеОтправкаПисем(СоответствиеТекстовЭлектронныхПисем, глТекущийПользователь, МассивУчетныхЗаписей, , , Истина, ); КонецПроцедуры Процедура ОбработкаПолученныхФайлов(Кнопка) УчетнаяЗаписьКому = ПланыОбмена.РаспределеннаяБаза.ЭтотУзел().УчетнаяЗаписьЭлектроннойПочты; ВложенияЭлектронныхПисем = Справочники.ВложенияЭлектронныхПисем; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЭлектронноеПисьмо.Ссылка КАК ЭлектронноеПисьмо |ИЗ | Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо |ГДЕ | ЭлектронноеПисьмо.УчетнаяЗапись = &парамУчетнаяЗапись | И ЭлектронноеПисьмо.ГруппаУчетнойЗаписи = &парамГруппаУчетнойЗаписи | И ЭлектронноеПисьмо.НеРассмотрено = ИСТИНА | И ЭлектронноеПисьмо.ЕстьВложения = ИСТИНА"; Запрос.УстановитьПараметр("парамУчетнаяЗапись", УчетнаяЗаписьКому); Запрос.УстановитьПараметр("парамГруппаУчетнойЗаписи", ПолучитьГруппуПисемУчетнойЗаписи(УчетнаяЗаписьКому, "Входящие")); ТаблицаВложенийЭлектронныхПисем = Новый ТаблицаЗначений; ТаблицаВложенийЭлектронныхПисем.Колонки.Добавить("Письмо", Новый ОписаниеТипов("ДокументСсылка.ЭлектронноеПисьмо")); ТаблицаВложенийЭлектронныхПисем.Колонки.Добавить("Вложение", Новый ОписаниеТипов("СправочникСсылка.ВложенияЭлектронныхПисем")); ТаблицаВложенийЭлектронныхПисем.Колонки.Добавить("ИмяФайла", Новый ОписаниеТипов("Строка")); ТаблицаВложенийЭлектронныхПисем.Колонки.Добавить("СтрокаОбработана", Новый ОписаниеТипов("Булево")); ВыборкаПисем = Запрос.Выполнить().Выбрать(); Пока ВыборкаПисем.Следующий() Цикл Отбор = Новый Структура; Отбор.Вставить("Объект", ВыборкаПисем.ЭлектронноеПисьмо); ВыборкаВложений = ВложенияЭлектронныхПисем.Выбрать(,,Отбор); Пока ВыборкаВложений.Следующий() Цикл НоваяСтрока = ТаблицаВложенийЭлектронныхПисем.Добавить(); НоваяСтрока.Письмо = ВыборкаПисем.ЭлектронноеПисьмо; НоваяСтрока.Вложение = ВыборкаВложений.Ссылка; НоваяСтрока.ИмяФайла = ВыборкаВложений.ИмяФайла; КонецЦикла; КонецЦикла; ТаблицаВложенийЭлектронныхПисем.Сортировать("ИмяФайла Возр"); Для Каждого СтрокаТаблицы Из ТаблицаВложенийЭлектронныхПисем Цикл //определимся с именем файла ИмяФайла = СтрокаТаблицы.ИмяФайла; ИмяФайлаНаДиске = КаталогВременныхФайлов() + ИмяФайла; ПозицияСимволаРешетка = Найти(ИмяФайлаНаДиске, "#"); ИмяФайлаНаДискеZIP = Лев(ИмяФайлаНаДиске, ПозицияСимволаРешетка - 1) + ".zip"; //запишем его на диск ДвоичныеДанные = СтрокаТаблицы.Вложение.Хранилище.Получить(); ДвоичныеДанные.Записать(ИмяФайлаНаДискеZIP); //разархивируем Архиватор = Новый ЧтениеZIPФайла(ИмяФайлаНаДискеZIP); КоличествоЭлементов = Архиватор.Элементы.Количество(); Если КоличествоЭлементов > 0 Тогда КаталогДляРаспаковки = КаталогВременныхФайлов(); Для ИндексЭлемента = 0 По (КоличествоЭлементов - 1) Цикл Архиватор.Извлечь(Архиватор.Элементы[ИндексЭлемента], КаталогДляРаспаковки, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); ИмяРазАрхивированногоФайла = ПолучитьИмяФайла(КаталогДляРаспаковки, Архиватор.Элементы[ИндексЭлемента].Имя); //теперь читаем ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.ОткрытьФайл(ИмяРазАрхивированногоФайла); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); //ПараметрыСеанса.ИдетОбменРаспределеннойБазы = Истина; ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); //удалим временные файлы УдалитьФайлы(ИмяРазАрхивированногоФайла); КонецЦикла; Иначе Продолжить; КонецЕсли; // Если ПоследняяАктуальнаяСтрокаЭлектронногоПисьма(ТаблицаВложенийЭлектронныхПисем, СтрокаТаблицы) Тогда ПисьмоОбъект = СтрокаТаблицы.Письмо.ПолучитьОбъект(); ПисьмоОбъект.НеРассмотрено = Ложь; ПисьмоОбъект.ОбменДанными.Загрузка = Истина; ПисьмоОбъект.Записать(); КонецЕсли; //удалим временные файлы УдалитьФайлы(ИмяФайлаНаДискеZIP); КонецЦикла; КонецПроцедуры |
|||
|
9
BabySG
28.10.07
✎
23:02
|
(8) :) Сам код не тут, ну да ладно :) Типовая торговля?
В функции ПолучениеОтправкаПисем(....) найти такие строки Попытка ИнтернетПочта.Подключиться(Профиль Исключение и отладчиком посмотреть, что твориться в профиле... |
|||
|
10
Gal4onok
29.10.07
✎
06:56
|
торговля типовая, распределенная.
попробую посмотреть-только я не очень понимаю вообще настройки smtp...из учетной записи проверка подключения все ок! |
|||
|
11
колодина
29.10.07
✎
07:02
|
можно отправлять через объект "Почта"... очень легко и просто
пользователь=ПараметрыСеанса.ТекущийПользователь; Отбор = Новый Структура; Отбор.Вставить("Пользователь",ПараметрыСеанса.ТекущийПользователь); Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.ОсновнаяУчетнаяЗапись); УчетнаяЗапись = регистрысведений.НастройкиПользователей.Получить(Отбор); Почта = Новый Почта; попытка почта.Подключиться(); исключение сообщить("не смогла подключиться"); конецпопытки; Сообщение = Новый ПочтовоеСообщение; Сообщение.Тема = "Сообщение для клиента - держателя топливной карты"; файлквитанции = файлдляотправки; если файлквитанции <>"" тогда Сообщение.Вложения.Добавить(новый ДвоичныеДанные(файлквитанции),"Документ.doc"); конецесли; Сообщение.Текст=текстписьма; Сообщение.Отправитель=УчетнаяЗапись.Значение.АдресЭлектроннойПочты; Сообщение.Получатели.Добавить(Выборка.электронныйадрес); попытка Почта.Послать(сообщение,Истина); послали=истина; исключение сообщить("не могу послать сообщение."); послали=Ложь; конецпопытки; Почта.Отключиться(); |
|||
|
12
Gal4onok
29.10.07
✎
19:56
|
11-спасибо большое.только у меня проблема теперь в обратном направлении-как это письмо принять и прочитать средсвами 1с?
|
|||
|
13
Gal4onok
29.10.07
✎
19:57
|
процесс зависает.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |