Имя: Пароль:
1C
1C 7.7
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
процесс зависает.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой