1с отправка почты
Сегодня рассмотрим такую интересную тему как отправка почты из 1с встроенными средствами. Обычно в любой типовой конфигурации есть механизм отправки почты, которым можно воспользоваться. Но мы сегодня сделаем заметку о том, как самому написать свой собственный код отправки почты.
Ну и как обычно в конце статьи готовая обработка с примером!
Стоит обратить внимание, что пример мы рассмотри с отправкой почты с внутреннего сервера, по которой у нас бегает почта в сети.
Итак, для отправки почты нам по сути важны 4 параметра, которые мы можем выпросить у администратора, либо посмотреть в 1с-ке откуда у нас ходит почта в справочнике ‘Учетные записи электронной почты‘ (в типовых конфигурациях):
- АдресСервераSMTP;
- ПортSMTP;
- ПользовательSMTP;
- ПарольSMTP.
1 2 3 4 5 |
ПараметрыПодключения = Новый Структура; ПараметрыПодключения.Вставить("АдресСервераSMTP" , "front.xxxx.ru"); ПараметрыПодключения.Вставить("ПортSMTP" , 25); ПараметрыПодключения.Вставить("ПользовательSMTP" , "1Cxxxx@xxxx.ru"); ПараметрыПодключения.Вставить("ПарольSMTP" , "xxxx"); |
После того как данные были получены, пытаемся авторизовать наш почтовый профиль ‘Новый ИнтернетПочтовыйПрофиль’ через интернет почту ‘Новый ИнтернетПочта’:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
&НаКлиенте Процедура ПриОткрытии(Отказ) ПараметрыПодключения = Новый Структура; ПараметрыПодключения.Вставить("АдресСервераSMTP" , "front.xxxx.ru"); ПараметрыПодключения.Вставить("ПортSMTP" , 25); ПараметрыПодключения.Вставить("ПользовательSMTP" , "1Cxxxx@xxxx.ru"); ПараметрыПодключения.Вставить("ПарольSMTP" , "xxxx"); Соединение = ОткрытьСоединениеДляОтправкиПочты(ПараметрыПодключения); Если Соединение = Неопределено Тогда Состояние = "Не удалось подключиться к почтовому серверу!"; Иначе Состояние = "Успешно подключились!"; КонецЕсли; КонецПроцедуры &НаКлиенте Функция ОткрытьСоединениеДляОтправкиПочты(ПараметрыПодключения) Экспорт ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль; ПочтовыйПрофиль.АдресСервераSMTP = ПараметрыПодключения.АдресСервераSMTP; ПочтовыйПрофиль.ПортSMTP = ПараметрыПодключения.ПортSMTP; ПочтовыйПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; ПочтовыйПрофиль.ПользовательSMTP = ПараметрыПодключения.ПользовательSMTP; ПочтовыйПрофиль.ПарольSMTP = ПараметрыПодключения.ПарольSMTP; Соединение = ПолучитьПочтовоеСоединение(ПочтовыйПрофиль); Возврат Соединение; КонецФункции &НаКлиенте Функция ПолучитьПочтовоеСоединение(ПочтовыйПрофиль) Экспорт ПочтовоеСоединение = Неопределено; Попытка ПочтовоеСоединение = Новый ИнтернетПочта; ПочтовоеСоединение.Подключиться(ПочтовыйПрофиль, ПротоколИнтернетПочты.POP3); Исключение КонецПопытки; Возврат ПочтовоеСоединение; КонецФункции |
Если мы все указали верно, то в итоге получим соединение с интернет почтой, через которое мы смело можем теперь отправлять письма из 1с. Для того что бы сформировать самое простое почтовое сообщение используем ‘Новый ИнтернетПочтовоеСообщение’:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("test"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "test"; Письмо.Отправитель = ф_кэшзначений.ПараметрыПодключения.ПользовательSMTP; Письмо.ИмяОтправителя = "test"; Для Каждого Элемент Из МассивПолучателей Цикл Письмо.Получатели.Добавить(Элемент); КонецЦикла; Если ЗначениеЗаполнено(ПутьКфайлу) Тогда Письмо.Вложения.Добавить(ПутьКфайлу); КонецЕсли; |
Обратите внимание – здесь мы можем добавлять любое число получателей и добавлять вложения в наше письмо. После его формирования отправляем с помощью ранее сформированного соединения:
1 |
Соединение.Послать(Письмо); |
Вот таким вот простым способом, мы можем отправлять почту из 1с.
Выкладываю полный код обработки и саму обработку. Все как обычно бесплатно – качаем и пользуемся!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ф_кэшзначений = Новый Структура; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ПараметрыПодключения = Новый Структура; ПараметрыПодключения.Вставить("АдресСервераSMTP" , "front.xxxx.ru"); ПараметрыПодключения.Вставить("ПортSMTP" , 25); ПараметрыПодключения.Вставить("ПользовательSMTP" , "1Cxxxx@xxxx.ru"); ПараметрыПодключения.Вставить("ПарольSMTP" , "xxxx"); Соединение = ОткрытьСоединениеДляОтправкиПочты(ПараметрыПодключения); ф_кэшзначений.Вставить("Соединение", Соединение); ф_кэшзначений.Вставить("ПараметрыПодключения", ПараметрыПодключения); Если Соединение = Неопределено Тогда Состояние = "Не удалось подключиться к почтовому серверу!"; Иначе Состояние = "Успешно подключились!"; КонецЕсли; КонецПроцедуры &НаКлиенте Функция ОткрытьСоединениеДляОтправкиПочты(ПараметрыПодключения) Экспорт ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль; ПочтовыйПрофиль.АдресСервераSMTP = ПараметрыПодключения.АдресСервераSMTP; ПочтовыйПрофиль.ПортSMTP = ПараметрыПодключения.ПортSMTP; ПочтовыйПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; ПочтовыйПрофиль.ПользовательSMTP = ПараметрыПодключения.ПользовательSMTP; ПочтовыйПрофиль.ПарольSMTP = ПараметрыПодключения.ПарольSMTP; Соединение = ПолучитьПочтовоеСоединение(ПочтовыйПрофиль); Возврат Соединение; КонецФункции &НаКлиенте Функция ПолучитьПочтовоеСоединение(ПочтовыйПрофиль) Экспорт ПочтовоеСоединение = Неопределено; Попытка ПочтовоеСоединение = Новый ИнтернетПочта; ПочтовоеСоединение.Подключиться(ПочтовыйПрофиль, ПротоколИнтернетПочты.POP3); Исключение КонецПопытки; Возврат ПочтовоеСоединение; КонецФункции &НаКлиенте Процедура Отправить(Команда) Если НЕ ф_кэшзначений.Соединение = Неопределено Тогда МассивПолучателей = СтрРазделить(Получатели, ","); Если МассивПолучателей.Количество() > 0 Тогда Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("test"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "test"; Письмо.Отправитель = ф_кэшзначений.ПараметрыПодключения.ПользовательSMTP; Письмо.ИмяОтправителя = "test"; Для Каждого Элемент Из МассивПолучателей Цикл Письмо.Получатели.Добавить(Элемент); КонецЦикла; Если ЗначениеЗаполнено(ПутьКфайлу) Тогда Письмо.Вложения.Добавить(ПутьКфайлу); КонецЕсли; Попытка ф_кэшзначений.Соединение.Послать(Письмо); Исключение Сообщить("Не удалось отправить письмо!"); КонецПопытки; Иначе Сообщить("Укажите получателей!"); Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) Попытка ф_кэшзначений.Соединение.Отключиться(); Исключение КонецПопытки; КонецПроцедуры &НаКлиенте Процедура ПутьКфайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка=ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Диалог.МножественныйВыбор = Ложь; Если Диалог.Выбрать() Тогда ПутьКфайлу = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры |
Скачать файлыcraft1s_OtpravkaPochty.epf