Почтовые и смс-рассылки из 1С

1c-send-mail-600x305.png

Пример процедуры

&НаСервереПроцедура ОтправитьНаСервере() 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С

Отправка-писем-из-1С-статья-изображение.jpg
Процедура ОтправитьПисьмо(Кнопка)//Первым делом нам необходимо создать новый профиль подключения к серверу. ПрофильПодключения =Новый ИнтернетПочтовыйПрофиль;   //Так как мы будем отправлять письма, нам будет необходим только 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");   //Теперь пытаемся отправить письмоПопытка Почта.Послать(Письмо);Исключение         Сообщить("Не удалось отправить письмо ");         Сообщить(ОписаниеОшибки());КонецПопытки;   //Обязательно отключаемся от почтового сервера по завершении отправки письма. Почта.Отключиться();   КонецПроцедуры;
Ссылка на основную публикацию