Содержание
Пример процедуры
&НаСервереПроцедура ОтправитьНаСервере() Email =Новый ИнтернетПочта; УчетнаяЗапись =Новый ИнтернетПочтовыйПрофиль; УчетнаяЗапись.ВремяОжидания =120;; УчетнаяЗапись.АдресСервераSMTP ="smtp.mail.ru"; УчетнаяЗапись.АдресСервераPOP3 ="pop.mail.ru"; УчетнаяЗапись.Пользователь ="infofront@bk.ru"; УчетнаяЗапись.ПользовательSMTP ="infofront@bk.ru"; УчетнаяЗапись.Пароль ="ВашПароль"; УчетнаяЗапись.ПарольSMTP ="ВашПароль"; УчетнаяЗапись.ПортSMTP =465; УчетнаяЗапись.ИспользоватьSSLSMTP =Истина; УчетнаяЗапись.ПортPOP3 =995; УчетнаяЗапись.ИспользоватьSSLPOP3 =Истина; УчетнаяЗапись.АутентификацияSMTP = СпособSMTPАутентификации.Login; Письмо =Новый ИнтернетПочтовоеСообщение; Письмо.Отправитель.Адрес ="infofront@bk.ru"; Письмо.Отправитель.ОтображаемоеИмя ="Робот"; Письмо.Вложения.Добавить("Адрес вложения, текст","наименование файла вложения"); Письмо.Тема ="Отправка письма, тест"; Получатель = Письмо.Получатели.Добавить("skorpofeoga@gmail.com");Попытка Email.Подключиться(УчетнаяЗапись);Исключение Сообщить("Ошибка авторизации, введите правильный логин и пароль"+ ОписаниеОшибки(), СтатусСообщения.Важное);КонецПопытки; Текст = Письмо.Тексты.Добавить(); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Текст.Текст ="Текст письма, тест";Попытка Email.Послать(Письмо); ЭтаФорма.Доступность =Ложь; Сообщить("Успех");Исключение Сообщить("Во время отправки письма возникла ошибка"+ ОписаниеОшибки(), СтатусСообщения.Важное)КонецПопытки; Email.Отключиться();КонецПроцедуры
Разберем несложный код для отправки email в 1с.
Если вам нужно отправить электронное письмо программным способом, без лишних диалогов и дополнительных программ и библиотек, то я вам расскажу как это сделать несколькими способами.
Первый способ
В 1с:Предприятия 8.х можно пользоваться типовым функционалом платформы с помощью «Почта = Новый ИнтернетПочта»:
//Создаем профиль либо считываем из справочника Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = Отправитель.АдресСервераSMTP; //"smtp.mail.ru"; Профиль.АдресСервераPOP3 = Отправитель.АдресСервераPOP3; //"pop.mail.ru"; Профиль.ПортPOP3 = Отправитель.ПортPOP3; //110; Профиль.ПортSMTP = Отправитель.ПортSMTP; //587; Профиль.Пользователь = Отправитель.Email; //"test@mail.ru"; Профиль.Пароль = Отправитель.Пароль; //"123456789"; Профиль.ПользовательSMTP = Отправитель.Email; //"test@mail.ru"; Профиль.ПарольSMTP = Отправитель.Пароль; //"123456789"; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; //Создаем письмо Почта = Новый ИнтернетПочта; Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("Это текст письма."); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "Это тема письма"; Письмо.Отправитель = "Отправитель"; Письмо.ИмяОтправителя = "Имя отправителя"; Письмо.Получатели.Добавить("poluchatel@mail.ru"); Письмо.Вложения.Добавить(Файл); //добавляем вложение если нужно, например "C:Приложение.doc" //Вложений можно добавлять сколько требуется. //Отправляем письмо Попытка Почта.Подключиться(Профиль); Почта.Послать(Письмо); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; //Закрываем письмо Почта.Отключиться(); //Закрываем файл вложения Письмо.Вложения.Очистить();
Второй способ
Это отправка с помощью Microsoft CDO. Его можно использовать как в 8.х так и в 7.7. Так же поддерживает вложения, копии писем на другие емейлы.
ИспользоватьSSL = Истина; iConf = Новый COMОбъект("CDO.Configuration"); iMsg = Новый COMОбъект("CDO.Message"); iMsg.Configuration = iConf; iMsg.from = Отправитель.Наименование; iMsg.to = EMAILПолучателя; iMsg.sender = Отправитель.Наименование; iMsg.Subject = Тема; iMsg.TextBody = ТекстПисьма; iMsg.BodyPart.Charset = "Windows-1251"; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = Отправитель.АдресСервераSMTP; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = Отправитель.ПортSMTP; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1; // 0 - Do not authenticate; 1 - basic (clear-text) authentication; 2 - NTLM iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = Отправитель.Email; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = Отправитель.Пароль; Если ИспользоватьSSL = Истина Тогда iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 1; КонецЕсли; iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60; iMsg.AddAttachment(Файл); //вложение письма Попытка iConf.Fields.Update(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка iMsg.Send(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки;
В 1с 7.7 все аналогично кроме создания COM объекта:
iConf = CreateObject("CDO.Configuration"); iMsg = CreateObject("CDO.Message");
Отправка писем из 1С
Процедура ОтправитьПисьмо(Кнопка)//Первым делом нам необходимо создать новый профиль подключения к серверу. ПрофильПодключения =Новый ИнтернетПочтовыйПрофиль; //Так как мы будем отправлять письма, нам будет необходим только SMTP адрес //нашего почтового сервера. Для примера, возьмем Яндекс. ПрофильПодключения.АдресСервераSMTP ="smtp.yandex.ru"; //Сервер Яндекса требует обязательного SSL шифрования. ПрофильПодключения.ИспользоватьSSLSMTP=Истина; //Так как мы подключаемся через SSL, указываем порт 465. Если подключение//не защищенное, то используем порт 25 ПрофильПодключения.ПортSMTP =465; //Прописываем пользователя от имени которого будет осуществляться подключение //к почтовому серверу и его пароль ПрофильПодключения.ПользовательSMTP ="RandomEmail@yandex.ru"; ПрофильПодключения.ПарольSMTP ="12345678"; //Создаем объект ИнтернетПочта Почта =Новый ИнтернетПочта; //Пытаемся подключится к серверу используя наши настройки.Попытка Почта.Подключиться(ПрофильПодключения);Исключение Сообщить("Не удалось подключиться к серверу smtp.yandex.ru"); Сообщить(ОписаниеОшибки());КонецПопытки; //Определяемся с текстом письма Тело="Добрый день! |Вас приветствует компания ""Ромашка"" |Будем рады видеть Вас в числе наших клиентов! |"; //Создаем сообщение Письмо =Новый ИнтернетПочтовоеСообщение; //Добавляем наш текст в письмо Письмо.Тексты.Добавить(Тело); //Добавляем тему Письмо.Тема ="У нас есть товар для Вас!"; //Добавляем ту же почту, через которую подключаемся к серверу//Для таких серверов, как Яндекс, Мейл, Гугл эти почты должны обязательно совпадать//Однако, имея свой почтовый сервер для домена, можно использовать любую другую почту //с вашим доменом для отправки (по крайней мере, у нас так работает). Письмо.Отправитель ="RandomEmail@yandex.ru"; //Добавляем имя отправителя Письмо.ИмяОтправителя ="Отдел впаривания товаров"; //Добавляем получателя Письмо.Получатели.Добавить("RandomEmail1@yandex.ru"); //Для массовых рассылок можно использовать СлепыеКопии, что бы получатели не видели, //кому еще отправлялось это письмо. Письмо.СлепыеКопии.Добавить("RandomEmail2@yandex.ru"); //Теперь пытаемся отправить письмоПопытка Почта.Послать(Письмо);Исключение Сообщить("Не удалось отправить письмо "); Сообщить(ОписаниеОшибки());КонецПопытки; //Обязательно отключаемся от почтового сервера по завершении отправки письма. Почта.Отключиться(); КонецПроцедуры;
Используемые источники:
- https://infofront.su/1s-otpravit-email-programmno/
- https://lavnik.net/programmnaja-otpravka-jelektronnogo-pisma-v-1s
- https://xn--1—gmcadgeej.xn--p1ai/otpravka-pisem-iz-1s/