1с как отправить письмо программно
При работе с почтой разделяют два способа доступа к почтовому ящику, почтовому клиенту:
объект "Почта" и объект "Интернет почта", каждый из объектов имеет свои достоинства.
Почта - предоставляет доступ к почте через встроенный почтовый клиент, работает по технологии MAPI.
Интернет почта - объект открывает возможности по доступу непосредственно к почтовым ящикам и учетным записям находящимися на почтовом сервере, использование и работа данного объекта не зависит от установленных в системе почтовых клиентов, даже если почтовый клиент установлен в системе "ИнтернетПочта" будет работать параллельно с ним, объект использует интернет-протоколы SMTP, POP3.
Для работы с объектом Почта необходимо наличие установленного на компьютере почтового клиента с описанными учетными записями.
Для подключения к почтовому клиенту у объекта есть метод "Подключиться".
Код 1C v 8.х
Первый параметр - имя профиля, к примеру, если в системе установлен MS Outlook, то как правило его профиль называется Outlook. Следовательно при подключении строка выглядела бы так:
Код 1C v 8.х
Второй параметр отвечает за пароль к учетной записи.
//Выбираем все письма, со всеми вложениями.
Код 1C v 8.х
(иногда при взаимодействии с Outlook 2003 возникает проблема, при которой 1С 8 просто аварийно завершает работу с ошибкой, именно на данной строке кода, это лечится установкой пакета обновления SP2 для MS Office 2003).
Перед подключением к почтовому серверу, для объекта ИнтернетПочта необходимо заполнить данные Профиля учетной записи, и затем передать эти данные в метод "Подключиться".
При переборе вложений, данные полученные из письма сохраняются в реквизит типа ХранилищеЗначения, заранее созданного справочника "СправочникВложения" в конфигураторе, т.к. данные первоначально сохраняются на диск, а затем загружаются в справочник, то, после загрузки в соответствующий реквизит справочника данные можно удалить. Не рекомендуется хранить данные типа ХранилищеЗначения в Табличных частях справочников, т.к. при больших объемах данных это затормаживает работу конфигурации.
Удобно подключить автополучение/автоотправку почты командой "ПодключитьОбработчикОжидания(,)". Первый параметр в команде отвечает за наименование вызываемой процедуры, и второй, период ожидания процедуры в секундах, обычно обработчик ожидания вставляется в глобальный модуль системы (например, в процедуру ПриНачалеРаботыСистемы()) и указывает на процедуру с пометкой Экспорт.
Например, можно создать процедуру ПроверитьПочту, в которую вставить загрузку писем из почтового ящика и вставить ее в следующую строку:
После использования нескольких или сразу всех способов работы с электронной почтой, образуется полноценный почтовый клиент с возможностью хранения и обработки писем с вложениями на базе 1С предприятие 8.0.
Допустим, есть задача, сформировать программное электронное письмо шаблон и в него вставлять какой-то свободно изменяемый текст в зависимости от ситуации а-ля официальный бланк на бумаге. Разберём на примере поздравления с новым годом наших горячо любимых клиентов! УРА! И сделаем мы это без помощи дизайнеров и верстальщиков! УРА!
Допустим, у вас есть некий официальный или фирменный бланк в WORD (не реклама).
А если нет, то вы я думаю, легко его сможете в том же WORD создать. Для примера я создал:
Понял, что меня устраивает такой дизайн, делаю его пригодным для внутрипрограммного «парсинга». Т.е. раставляю метки, которые позже буду использовать.
Для себя нашел самый простой способ конвертировать его в HTML в том же WORDе. Просто сохраняем его в HTML и открываем с помощью браузера CHROME (не реклама).
А затем подготавливаем небольшую обработку. Чтобы легко и быстро конвертировать код HTML в строку 1С. Может можно иначе, но я решил так.
Создал внешнею обработку, на форме два реквизита оба строковые «Исходный» и «Конвертированный», одна команда «Конвертировать».
Код команды "Конвертировать":
Теперь мы готовы и возвращаемся в CHROME к нашей заготовке. Правой кнопкой по самому полю страницы вызываем контекстное меню и выбираем пункт «Просмотреть код страницы».
Копируем его весь, не парьтесь вы же ни верстальщик и ни дизайнер, по этому просто пока бездумно всё забираем (но конечно можете блеснуть знанием HTML и сверстать так как вам угодно, но мне это не интересно пока), вставляем в нашу свежеиспеченную обработку и конвертируем ;)
Всё текст готов для вставки в код.
2. Создаем рассыльщик с поддержкой HTML
Теперь займёмся написанием процедуры отправки почты. В примере создадим обработку, через которую будет производиться отправка почты.
Реквизиты все строкового типа: Адреса, Должность, ЗаголовокПисьма, Подпись, ТекстПисьма, ТемаПисьма и ФИО.
После проверки кода, конфигуратор выдаст ошибку: «Процедура или функция с указанным именем не определена (СформироватьТекстПисьма)». Вот и переходим к конечному пункту формированию самого письма.
Создаем новую функцию и одну текстовую переменную в ней для начала «Шаблон», которой присваиваем заранее скопированный из буфера конвертированной в обработке созданной нами выше текст, просто не задумывая с набор этих букв.
Нужно главное не забыть! Что у нас есть картинка, и её придётся ручками под редактировать в коде… Сейчас путь указан «src=""Информационно1.files/image001.jpg""». Где это 1С не поймёт, по этому я создал папочку и положил картинку в неё и разместил все для примера на диске С.
Получил новый путь и вставлю его в тег SRC. Выходит «src="" C:\public\logo.jpg""».
ВНИМАНИЕ! Если папка шара, то путь указывается с одним слешем типа «src="" \192.168.1.1.\Bid\kotov\logo.jpg», 1С и это съест нормально. Почему один не знаю, но так работает у меня проверено ;)
Вот теперь после присвоения переменной «Шаблон», будем её изменять и редактировать программно всего одной функцией СтрЗаменить и идти к успеху! Вы же помните наши метки, по ним и будем ориентироваться. Готовая функция:
Запускаем обработку, заполняем данными и отправляем поздравительный спам :)
Результат проверил на разных почтовых сервисах, программах и устройствах:
А вот в мобильной версии из меня не удачный верстальщик ;)
По этому смотрите сами, корректируйте и выстраивайте шаблон так в WORDе, чтобы он читабелен был везде ;)
Мы имеем возможность создать свой универсальный шаблон, в который можно выводить отчет, вставлять разные картинки от ситуации, конечно потребуется минимальное понимание HTML (для динамического формирования таблицы и её заполнения), но это позволит создавать рассылку или уведомления более привлекательными. А это хороший шаг в Email-маркетинге иметь привлекательное письмо.
Можно развить шаблон до формата редактирования его прямо в 1С используя одну из многочисленных обработок:
Но лично мне удобнее и проще показалось создать шаблон в ворде, чем ковыряться в html-редакторе.
Удачного кодинга! С наступающим Новым Годом!
ПС (добавим таблицу значений в официальное письмо):
Мне нужно, чтобы человек ввел дату и сумму которая ему нужна и по этому сформировалась временная таблица, которую потом программа отправит ему по почте(с почтой я всё решил) мне нужна помощь только с работой с элементами
P.S.
John342 ответь мне, если увидишь конечно.
Хочу , чтобы при вводе в поля дата и сумма, программа отправляла отчёт по почте по этой дате и сумме (с отправкой уже всё решил)
(3) Значит надо просто сформировать отчет.
(3) формируешь отчёт, сохраняешь его как. ну пусть как ПДФ, создаешь электронное письмо, прикрепляешь ПДФ к письму, отправляешь письмо.
оповестить по электронной почте руководителя компании о заказах. Пользователь, ответственный за рассылку данных, на форме обработки указывает период и
сумму, свыше которой заказы являются нужными для руководителя.
Я сделал всё, ничего не заработало, всё удалил и пришёл сюда, я просто кодил больше 10 часов, поэтому мысли путаются, извините
(12) "Я сделал всё, ничего не заработало" Можно более развернуто - что именно не заработало? Неужели не получилась форма для ввода периода и суммы?
Подготовить данные для отправки:
1. Сформировать какой-то табличный документ.
2. Сохранить его в виде pdf или xls
Что из этого не получается?
У меня в принципе проблема, как это реализовать, вот с кнопкой которая отправляет на почту письмо я быстро разобрался, а с отчетом по периоду и сумме не могу разобраться
Итог должен быть такой :
Тема письма: «Крупные заказы за период с 10 сентября 2019 по 13 сентября 2019»
Тело письма:
«Здравствуйте, Иван Иванович!
Список заказов с суммой от 100 000 руб. за период с 10 сентября 2019 по 13 сентября 2019:
№ Дата Клиент Сумма Менеджер
УТ-0001 10.09.2019 ООО «Ромашка» 100 000 руб. Павлов Н.И.
УТ-0004 12.09.2019 ИП Петров Н.В. 230 000 руб. Лебедева Н.С.
УТ-0015 13.09.2019 ИП Петров Н.В. 130 000 руб. Лебедева Н.С.
Всего 3 заказа на сумму 460 000 (Четыреста шестьдесят тысяч) руб.»
А извиняюсь я же говорю голова плывет немного кода вывода отчёта у меня нет, я же написал что проблемы с отчётом, как я не получив отчёт буду писать код его вывода
Чтобы сформировать отчет тебе нужно:
1. Получить исходные данные для отчета
2. Вывести куда-то эти данные: может быть текстовый документ или макет
Если УдалитьСоединение <> Неопределено Тогда
ПараметрыОтправки . Вставить ( "Соединение" , УдалитьСоединение );
КонецЕсли;
Если Не ПустаяСтрока ( УдалитьПротоколПочты ) Тогда
ПараметрыОтправки . Вставить ( "ПротоколПочты" , УдалитьПротоколПочты );
КонецЕсли;
Если ТипЗнч ( УчетнаяЗапись ) <> Тип ( "СправочникСсылка.УчетныеЗаписиЭлектроннойПочты" )
Или НЕ ЗначениеЗаполнено ( УчетнаяЗапись ) Тогда
ВызватьИсключение НСтр ( "ru = 'Учетная запись не заполнена или заполнена неправильно.'" );
КонецЕсли;
Если ПараметрыОтправки = Неопределено Тогда
ВызватьИсключение НСтр ( "ru = 'Не заданы параметры отправки.'" );
КонецЕсли;
ТипЗнчКому = ?( ПараметрыОтправки . Свойство ( "Кому" ), ТипЗнч ( ПараметрыОтправки . Кому ), Неопределено);
ТипЗнчКопии = ?( ПараметрыОтправки . Свойство ( "Копии" ), ТипЗнч ( ПараметрыОтправки . Копии ), Неопределено);
СкрытыеКопии = ОбщегоНазначенияКлиентСервер . СвойствоСтруктуры ( ПараметрыОтправки , "СкрытыеКопии" );
Если ТипЗнчКому = Неопределено И ТипЗнчКопии = Неопределено И СкрытыеКопии = Неопределено Тогда
ВызватьИсключение НСтр ( "ru = 'Не указано ни одного получателя.'" );
КонецЕсли;
Если ТипЗнчКому = Тип ( "Строка" ) Тогда
ПараметрыОтправки . Кому = ОбщегоНазначенияКлиентСервер . РазобратьСтрокуСПочтовымиАдресами ( ПараметрыОтправки . Кому );
ИначеЕсли ТипЗнчКому <> Тип ( "Массив" ) Тогда
ПараметрыОтправки . Вставить ( "Кому" , Новый Массив );
КонецЕсли;
Если ТипЗнчКопии = Тип ( "Строка" ) Тогда
ПараметрыОтправки . Копии = ОбщегоНазначенияКлиентСервер . РазобратьСтрокуСПочтовымиАдресами ( ПараметрыОтправки . Копии );
ИначеЕсли ТипЗнчКопии <> Тип ( "Массив" ) Тогда
ПараметрыОтправки . Вставить ( "Копии" , Новый Массив );
КонецЕсли;
Если ТипЗнч ( СкрытыеКопии ) = Тип ( "Строка" ) Тогда
ПараметрыОтправки . СкрытыеКопии = ОбщегоНазначенияКлиентСервер . РазобратьСтрокуСПочтовымиАдресами ( СкрытыеКопии );
ИначеЕсли ТипЗнч ( СкрытыеКопии ) <> Тип ( "Массив" ) Тогда
ПараметрыОтправки . Вставить ( "СкрытыеКопии" , Новый Массив );
КонецЕсли;
Если ПараметрыОтправки . Свойство ( "АдресОтвета" ) И ТипЗнч ( ПараметрыОтправки . АдресОтвета ) = Тип ( "Строка" ) Тогда
ПараметрыОтправки . АдресОтвета = ОбщегоНазначенияКлиентСервер . РазобратьСтрокуСПочтовымиАдресами ( ПараметрыОтправки . АдресОтвета );
КонецЕсли;
Если ПараметрыОтправки . ОшибочныеПолучатели . Количество () > 0 Тогда
ТекстОшибки = НСтр ( "ru = 'Следующие почтовые адреса не были приняты почтовым сервером:'" );
Для Каждого ОшибочныйПолучатель Из ПараметрыОтправки . ОшибочныеПолучатели Цикл
ТекстОшибки = ТекстОшибки + Символы . ПС + СтроковыеФункцииКлиентСервер . ПодставитьПараметрыВСтроку ( "%1: %2" ,
ОшибочныйПолучатель . Ключ , ОшибочныйПолучатель . Значение );
КонецЦикла;
ВызватьИсключение ТекстОшибки ;
КонецЕсли;
ЭлПочтаДляОтправки = "from1C@yandex.ru" ; //Константы.ЭлПочтаДляОтправки.Получить()
ПочтовыйПрофиль = СозданиеИнтернетПрофиля ();
Сообщить ( " . Пожалуйста подождите. Идет отправка письма на " + ТекПолучатель );
Email = Новый ИнтернетПочта ;
Попытка
Email . Подключиться ( ПочтовыйПрофиль );
Исключение
ВызватьИсключение "Письмо НЕ отправлено! " + ОписаниеОшибки ()+ "!" ;
КонецПопытки;
Здравствуйте !
|
Email . Отключиться (); // Если не отключиться - будет "висеть" в процессах
ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль ;
ПочтовыйПрофиль . ВремяОжидания = 300 ; // Google рекомендует 5 минут
// Исходящая почта
//Если ФормироватьIMAPПрофиль Тогда
ПочтовыйПрофиль . АдресСервераIMAP = "imap.yandex.ru" ; // imap.mail.ru
ПочтовыйПрофиль . ПользовательIMAP = "from1C@yandex.ru" ; // from1C@mail.ru
ПочтовыйПрофиль . ПортIMAP = 993 ; // 993
Попытка
ПочтовыйПрофиль . ИспользоватьSSLIMAP = Истина;
Исключение
Сообщить ( "Не работает служба SSL IMAP! Для корректной работы необходима платформа 1С версии не менее 8.3!" );
КонецПопытки;
ПочтовыйПрофиль . ПарольIMAP = "Ro1Cte921hAb8sKf4" ;
//КонецЕсли;
//Если ФормироватьSMTPПрофиль Тогда
ПочтовыйПрофиль . АдресСервераSMTP = "smtp.yandex.ru" ; // smtp.mail.ru
ПочтовыйПрофиль . ПользовательSMTP = "from1C@yandex.ru" ; // from1C@mail.ru
ПочтовыйПрофиль . ПортSMTP = 465 ; // 465
Попытка
ПочтовыйПрофиль . ИспользоватьSSLSMTP = Истина;
Исключение
Сообщить ( "Не работает служба SSL SMTP! Для корректной работы необходима платформа 1С версии не менее 8.3!" );
КонецПопытки;
ПочтовыйПрофиль . ПарольSMTP = "Ro1Cte921hAb8sKf4" ;
ПочтовыйПрофиль . АутентификацияSMTP = СпособSMTPАутентификации . Login ;
//КонецЕсли;
Читайте также: