|
Как из ут 11 отправить электронное письмо программно? | ☑ | ||
---|---|---|---|---|
0
cyx7
02.04.15
✎
12:36
|
я во внешней обработке создала вызываю процедуру печать(счета на оплату), как мне отправить сразу это письмо? на форме обработке есть электронный адрес получателя. я нашла такой параметр, как параметрыОтправки, это структура, но как пользоваться этим?
|
|||
1
cyx7
02.04.15
✎
12:39
|
отправить письмо и прикрепить этот счет на оплату. что самое плохое, вызываю печать с помощью процедуры(УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьСчетовНаОплату","СчетНаОплату",МассивОбъектов,неопределено,ПараметрыПечати);), тоесть таб док мне не возвращается
|
|||
2
Бубка Гоп
02.04.15
✎
12:51
|
(0) версия платформы?
|
|||
3
cyx7
02.04.15
✎
13:58
|
(2) (8.3.5.1486)
|
|||
4
Бубка Гоп
02.04.15
✎
14:03
|
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати) возвращает таб.док. его сохраняйте во временный файлик и прикрепляйте к письму
|
|||
5
Бубка Гоп
02.04.15
✎
14:03
|
(4) + она находится в модуле менеджера, если что.
|
|||
6
Бубка Гоп
02.04.15
✎
14:05
|
(4) + ну и естественно надо бы включить в администрировании почтовый клиент и настроить учетнуб запись
|
|||
7
cyx7
02.04.15
✎
14:10
|
(4) как я поняла из внешней обработки можно только как в (1) вызывать печать, а так в модуле менеджера есть процедура печать, у которой последняя строка такая (ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);) это наверное и отправить сообщение. еще нашла общий модуль управление электронной почтой, возможно и в к нему нужно обращаться. А как мне проверить ваш способ( с модулем менеджера), как к нему обратиться?
|
|||
8
Бубка Гоп
02.04.15
✎
14:13
|
(7) можете не обращаться, просто скопируйте себе в обработку эту функцию, ибо она не экспортная :)
как отправлять, можете посмотреть в документе ЭлектронноеПисьмоИсходящее, например. Там есть кнопочка "отправить" |
|||
9
Бубка Гоп
02.04.15
✎
14:14
|
(8) + ну или можно воспользоваться внешними компонентами, например, cdo
|
|||
10
DrShad
02.04.15
✎
14:17
|
(9) а можно использовать методы платформы Новый ИнтернетПочтовоеСообщение;
|
|||
11
Бубка Гоп
02.04.15
✎
14:28
|
если уж делать по типовому, то как в (8).
Там ключевая строка это: Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект); |
|||
12
ЧеловекДуши
02.04.15
✎
14:39
|
(10) Это слишком просто...
(11) Т.е. Воспользоваться кодом от 1С, это типовой вариант? :) |
|||
13
Бубка Гоп
02.04.15
✎
14:53
|
(12) А что по вашему типовой вариант, если не использование кода типовой конфигурации?
|
|||
14
ЧеловекДуши
02.04.15
✎
15:08
|
(13) К примеру в моей конфе нет такой функции :(
|
|||
15
DrShad
02.04.15
✎
15:15
|
(14) +1
а в моей хоть и есть но не поддерживает SSL |
|||
16
cyx7
02.04.15
✎
16:35
|
пытаюсь создать документ электронное письмо исходящее, он создается, но не отправляется письмо, и в списке его не видно, но записывается он.делаю так
ЭлПисьмо = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент(); ЭлПисьмо.Автор = ПараметрыСеанса.АвторизованныйПользователь; ЭлПисьмо.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная; ЭлПисьмо.Дата = ТекущаяДата(); ЭлПисьмо.Ответственный = ПараметрыСеанса.АвторизованныйПользователь; ЭлПисьмо.СписокПолучателейПисьма = "[email protected]"; ЭлПисьмо.ДатаАктуальностиОтправки = ТекущаяДата(); ЭлПисьмо.ДатаКогдаОтправить = ТекущаяДата(); ЭлПисьмо.ДатаОтправления = ТекущаяДата(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | CRM_УчетныеЗаписиЭлектроннойПочты.УчетнаяЗапись |ИЗ | РегистрСведений.CRM_УчетныеЗаписиЭлектроннойПочты КАК CRM_УчетныеЗаписиЭлектроннойПочты |ГДЕ | CRM_УчетныеЗаписиЭлектроннойПочты.Пользователь = &Пользователь"; Запрос.УстановитьПараметр("Пользователь", ЭлПисьмо.Ответственный); реззапроса = запрос.Выполнить(); Выборка = РезЗапроса.Выбрать(); Выборка.Следующий(); ЭлПисьмо.CRM_Папка = Перечисления.CRM_ВидыПапокЭлектроннойПочты.Исходящие; ЭлПисьмо.ОтправительПредставление = Выборка.УчетнаяЗапись; ЭлПисьмо.УчетнаяЗапись = Выборка.УчетнаяЗапись; ЭлПисьмо.Записать(); |
|||
17
Бубка Гоп
02.04.15
✎
16:49
|
(16) статус установите. не видно потому что нет статуса (исходящие/отправленные)
|
|||
18
Бубка Гоп
02.04.15
✎
16:50
|
(15) ssl не поддерживает не конфигурация а платформа. платформа тс ssl поддердивает.
|
|||
19
Бубка Гоп
02.04.15
✎
16:51
|
(18) *поддерживает
|
|||
20
cyx7
02.04.15
✎
16:54
|
(17) все равно ничего не появилось и не отправилось
|
|||
21
Бубка Гоп
02.04.15
✎
16:57
|
(16) я создаю так, правда у меня 8.2, поэтому отправлять приходится через CDO. Плюс версия УТ я думаю у вас поновее
ЭД = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент(); ЭД.Автор = ПараметрыСеанса.ТекущийПользователь; ЭД.Дата = ТекущаяДата(); ЭД.ДатаОтправления = ТекущаяДата(); ЭД.Ответственный = ПараметрыСеанса.ТекущийПользователь; ЭД.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено; ЭД.СписокПолучателейПисьма = loCdoMessage.To; Получатель = ЭД.ПолучателиПисьма.Добавить(); Получатель.Контакт = ЗаказСсылка.Партнер; ЭД.ОтправительПредставление = loCdoMessage.From; ЭД.Текст = ТекстСообщения; ЭД.Тема = loCdoMessage.Subject; ЭД.УчетнаяЗапись = РеквизитыОтправителя.Ссылка; ЭД.Записать(РежимЗаписиДокумента.Запись); |
|||
22
Бубка Гоп
02.04.15
✎
17:00
|
(20) как минимум надо указать адресата. по коду не вижу, кому собственно отправляете
|
|||
23
Бубка Гоп
02.04.15
✎
17:01
|
(20) чтобы понять как заполнить документ, сначала отправьте себе какое нибудь тестовое письмо. Потом в консоли запросов посмотрите как заполнены реквизиты, и в коде заполняйте по аналогии
|
|||
24
Бубка Гоп
02.04.15
✎
17:02
|
(23) + я имею ввиду отправьте вручную письмо из предприятия, из встроенного почтового клиента
|
|||
25
cyx7
02.04.15
✎
17:05
|
(22) СписокПолучателейПисьма
|
|||
26
cyx7
02.04.15
✎
17:06
|
(22) а что такое ЦДО?
|
|||
27
Бубка Гоп
02.04.15
✎
17:07
|
||||
28
Бубка Гоп
02.04.15
✎
17:07
|
(25) попробуйте (23), поймете что не заполнено
|
|||
29
cyx7
02.04.15
✎
17:08
|
(27) тут мне неполнятно ничего)
|
|||
30
cyx7
02.04.15
✎
17:09
|
(28) сейчас попробую, мне больше всего не понятно почему в папке оно не появляется
|
|||
31
Бубка Гоп
02.04.15
✎
17:10
|
(29) ну вобщем это микрософтовская библиотека для отправки писем по SMTP
|
|||
32
Бубка Гоп
02.04.15
✎
17:10
|
(30) странно, у меня с кодом из (21) появляется
|
|||
33
Бубка Гоп
02.04.15
✎
17:12
|
(25) там исчо есть ТЧ СписокПолучателейПисьма, может этого ему не хватает для счастья
|
|||
34
Бубка Гоп
02.04.15
✎
17:12
|
(33) тьфу, т.е. ТЧ ПолучателиПисьма.
|
|||
35
StillEnough
02.04.15
✎
17:19
|
&НаКлиенте
Процедура ОтправитьПоПочте(Команда) СтруктураПисьма = ПолучитьЗначенияОтбора(); ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта", СтруктураПисьма); КонецПроцедуры &НаСервере Функция ПолучитьЗначенияОтбора() УИ = Новый УникальныйИдентификатор(); //СоздатьКаталог(КаталогПрограммы() + УИ); //ВыбранныйФайл = КаталогПрограммы() + УИ + "\РасчетСтоимости.txt"; СоздатьКаталог("C:\" + УИ); ВыбранныйФайл = "C:\" + УИ + "\РасчетСтоимости.txt"; ФайлРегистрации = Новый ЗаписьТекста(ВыбранныйФайл, КодировкаТекста.ANSI, , Истина); ФайлРегистрации.Записать(Объект.РасчетСтоимости); ФайлРегистрации.Закрыть(); ТемаПисьма = "Расчет стоимости пакетов от " + Объект.Дата; Адрес = ""; Если ЗначениеЗаполнено(Объект.Партнер) Тогда для каждого строка из Объект.Партнер.КонтактнаяИнформация Цикл Если Строка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда Адрес = строка.Представление; КонецЕсли; КонецЦикла; КонецЕсли; ЭлементыОтбора = Новый Структура("ВыбранныйФайл, Получатель, УИ, ТемаПисьма", ВыбранныйФайл, Адрес, УИ, ТемаПисьма); //ЭлментыОтбора = Новый Структура("Получатель, ТекстПисьма", Адрес, ТекстПисьма); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора); Возврат ПараметрыФормы; КонецФункции В модуле письма обработка //пробуем заполнить знч получателя из формы Попытка СтруктураЗагружаемогоПисьма = СтруктураЗаполнения; Объект.СписокПолучателейПисьма = СтруктураЗаполнения.Получатель; стр = Объект.ПолучателиПисьма.Добавить(); стр.адрес = СтруктураЗаполнения.Получатель; //- Объект.Тема = СтруктураЗаполнения.ТемаПисьма; ВыбранныйФайл = СтруктураЗаполнения.ВыбранныйФайл; // путь к файлу НоваяСтрока = Вложения.Добавить(); НоваяСтрока.Расположение = 2; НоваяСтрока.ИмяФайлаНаКомпьютере = ВыбранныйФайл; ИмяФайла = ""; Расширение = ""; ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(ВыбранныйФайл, "", ИмяФайла); НоваяСтрока.ИмяФайла = ИмяФайла; Расширение = ВзаимодействияКлиентСервер.ПолучитьРасширениеФайла(ИмяФайла); НоваяСтрока.ИндексКартинки = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); Файл = Новый Файл(ВыбранныйФайл); НоваяСтрока.Размер = Файл.Размер(); НоваяСтрока.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(НоваяСтрока.Размер); Исключение КонецПопытки; ОтправитьПереслатьВыполнить(""); // Если сразу отправить //- |
|||
36
cyx7
02.04.15
✎
17:26
|
блин у меня даже из пользовательского интерфейса не отправляется((( только тестовое письмо отправилось и всё
|
|||
37
Бубка Гоп
02.04.15
✎
17:27
|
(36) в учетной записи все верно указали? сервер smtp, сервер pop3, порты к ним, учетку/пароль? какую ошибку пишет?
|
|||
38
Бубка Гоп
02.04.15
✎
17:28
|
(36) не очень понятно, пишете не отправляется, но тестовое письмо отправилось... как же оно тогда отправилось?)
|
|||
39
cyx7
02.04.15
✎
17:32
|
(38) ошибок вообще нету, я не знаю почему. настройки следующие: сервер - smtp.mail.ru, порт - 465, галка стоит использовать безопасное подключение,
|
|||
40
cyx7
02.04.15
✎
17:44
|
(39) а вот только что пришло одно письмо, которое пол часа назад отправила
|
|||
41
cyx7
02.04.15
✎
17:44
|
(40) но это из пользовательского режима
|
|||
42
Бубка Гоп
02.04.15
✎
17:59
|
(41) ну и вот, теперь смотрите как заполнены реквизиты в документе, котороый отправился
|
|||
43
cyx7
03.04.15
✎
09:09
|
(42) всё аналогично, и письма те которые программно отправлялись видно, но только надо открыть документ эл письмо исходящее, но они не пришли на почту
|
|||
44
Бубка Гоп
03.04.15
✎
09:34
|
(43) посмотрите отладчиком, скорее всего отправка идет из попытки, поэтому не видите ошибку. если учетка настроена правильно должно все отправляться
|
|||
45
cyx7
03.04.15
✎
11:32
|
и так, письмо просто записывается, а не отправляется, необходимо зайти в документы , нажать отправить - и тогда оно отправляется. тоесть я по сути только создаю его. как мне выполнить процедуру отправки письма?
|
|||
46
zippygrill
03.04.15
✎
11:44
|
парамПисьма.Вставить("Тело", "" + получитьТекстОстатков(датаДляОценкиОстатков) + txtHTML + ПолучитьТекстПодписи());
массПараметров = новый Массив; массПараметров.Добавить(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты); массПараметров.Добавить(парамПисьма); ФоновыеЗадания.Выполнить("РаботаСПочтовымиСообщениями.ОтправитьСообщение", массПараметров); |
|||
47
Бубка Гоп
03.04.15
✎
11:44
|
(45) естественно его надо отправить :D
сначала создали, затем отправили... посмотрите (11) |
|||
48
cyx7
03.04.15
✎
11:44
|
у меня получилось)))) добавила две строчки вот может пригодится кому нибудь
ПараметрыПисьма = Документы.ЭлектронноеПисьмоИсходящее.ПолучитьПараметрыПисьмаДляОтправки(ЭлПисьмо); ИдентификаторПисьма = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма); (элПисьмо-документОбъект созданный) |
|||
49
Бубка Гоп
03.04.15
✎
11:45
|
(48) ну слава Нуралиеву, поздравляю вас )
|
|||
50
cyx7
03.04.15
✎
11:45
|
(49) спасибо) и за помощь спасибо)
|
|||
51
cyx7
03.04.15
✎
16:39
|
а как к письму прикрепить табличный документ? (49)
|
|||
52
cyx7
06.04.15
✎
10:09
|
вверх
как к письму прикрепить табличный документ |
|||
53
Wobland
06.04.15
✎
10:14
|
у ОтправитьСообщение() есть мощное описание
|
|||
54
cyx7
06.04.15
✎
10:28
|
(53) у меня есть обработка, она сама создает документ рту, по кнопке отправить(на форме обработке). она формирует счетНаОплату, и в модуле форме я получаю табдок, пыталась отправить сообщение через документ электронное письмо, не вышло. а вы мне предлагаете через общий модуль обмен сообщениями? в нем же не передаваемых параметров типа вложение
|
|||
55
Wobland
06.04.15
✎
10:30
|
// ПараметрыПисьма - структура - содержит всю необходимую информацию о письме:
// содержит следующие ключи: // Кому* - Массив структур, строка - Интернет адрес получателя письма // Адрес - строка - почтовый адрес // Представление - строка - имя адресата // // Тема* - строка - тема почтового сообщения // Тело* - тело почтового сообщения (простой текст в кодировке win-1251) // Вложения - соответствие // ключ - наименованиеВложения - строка - наименование вложения // значение - ДвоичныеДанные - данные вложения |
|||
56
marvak
06.04.15
✎
10:31
|
Я так отправляю (УчетнаяЗапись, EMail, sSubject, sBody, ПапкаВложений - реквизиты на форме)
sFrom = "[email protected]>"; Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = УчетнаяЗапись.SMTPСервер; Профиль.ПортSMTP = УчетнаяЗапись.ПортSMTP; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; Профиль.Пароль = УчетнаяЗапись.Пароль; Профиль.Пользователь = УчетнаяЗапись.Логин; Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда Профиль.ПарольSMTP = УчетнаяЗапись.ПарольSMTP; Профиль.ПользовательSMTP = УчетнаяЗапись.ЛогинSMTP; Иначе Профиль.ПарольSMTP = УчетнаяЗапись.Пароль; Профиль.ПользовательSMTP = УчетнаяЗапись.Логин; КонецЕсли; ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение; ПочтовоеСообщение.Отправитель = sFrom; ПочтовоеСообщение.ИмяОтправителя = sFrom; ПочтовоеСообщение.Тема = sSubject + " от " + sFrom;; ПочтовоеСообщение.Получатели.Добавить(EMail); КодировкаПисьма = "iso-8859-5"; //либо "koi8-r", либо "utf-8" ТекстСообщения = ПочтовоеСообщение.Тексты.Добавить(sBody); ТекстСообщения.Кодировка = КодировкаПисьма; Если Не ПустаяСтрока(ПапкаВложений) Тогда МассивФайлов = НайтиФайлы(ПапкаВложений, "*.*"); Для каждого ТекФайл Из МассивФайлов Цикл ПолноеИмя = ТекФайл.ПолноеИмя; Попытка ПочтовоеСообщение.Вложения.Добавить(ПолноеИмя); Исключение ОбщегоНазначения.СообщитьОбОшибке("Ошибка при обработке файла " + ПолноеИмя); Продолжить; КонецПопытки; КонецЦикла; КонецЕсли; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(Профиль); Исключение Сообщить("Ошибка при подключении к серверу / профилю электронной почты!"); Возврат; КонецПопытки; ОтправкаУспешна = Истина; Попытка ИнтернетПочта.Послать(ПочтовоеСообщение); Сообщить("Сообщение отправлено."); Исключение ОтправкаУспешна = Ложь; ("Ошибка при отправке сообщения!"); КонецПопытки; ИнтернетПочта.Отключиться(); Если Не ОтправкаУспешна Тогда Возврат; КонецЕсли; |
|||
57
marvak
06.04.15
✎
10:36
|
(56)+
ОбщегоНазначения.СообщитьОбОшибке() - это связано с тем, что отправка из 8.1 (УТ 10.3), но из 8.2 я думаю ненамного отличается. |
|||
58
cyx7
06.04.15
✎
11:13
|
(55) да, нашла, пытаюсь Вашим методом делать, там во вложениях тип двоичные данные передаются, а у меня табличный документ, не подскажите как быть?
|
|||
59
Wobland
06.04.15
✎
11:16
|
(58) записать ТабДокумент в файл для начала
|
|||
60
cyx7
06.04.15
✎
11:33
|
(59) спасибо Вам большое)) записала его во врем файл, и все отправилось)) спасибо большущеее)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |