Среда, 24 апреля, 2024

Программная отправка электронного письма в 1с

Разберем несложный код для отправки email в 1с.

Если вам нужно отправить электронное письмо программным способом, без лишних диалогов и дополнительных программ и библиотек, то я вам расскажу как это сделать несколькими способами.

Первый способ

В 1с:Предприятия 8.х можно пользоваться типовым функционалом платформы с помощью Почта = Новый ИнтернетПочта:

//Создаем профиль либо считываем из справочника
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = Отправитель.АдресСервераSMTP; //"smtp.mail.ru";
Профиль.АдресСервераPOP3 = Отправитель.АдресСервераPOP3; //"pop.mail.ru";
Профиль.ПортPOP3 = Отправитель.ПортPOP3; //110;
Профиль.ПортSMTP = Отправитель.ПортSMTP; //587;
Профиль.Пользователь = Отправитель.Email; //"[email protected]";
Профиль.Пароль = Отправитель.Пароль; //"123456789";
Профиль.ПользовательSMTP = Отправитель.Email; //"[email protected]";
Профиль.ПарольSMTP = Отправитель.Пароль; //"123456789";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;

//Создаем письмо
Почта = Новый ИнтернетПочта;
Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить("Это текст письма.");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Письмо.Тема = "Это тема письма";
Письмо.Отправитель = "Отправитель";
Письмо.ИмяОтправителя = "Имя отправителя";
Письмо.Получатели.Добавить("[email protected]");
Письмо.Вложения.Добавить(Файл); //добавляем вложение если нужно, например "C:\Приложение.doc"
//Вложений можно добавлять сколько требуется.

//Отправляем письмо
Попытка
   Почта.Подключиться(Профиль);
   Почта.Послать(Письмо);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;

//Закрываем письмо
Почта.Отключиться();
//Закрываем файл вложения
Письмо.Вложения.Очистить();

Второй способ

Это отправка с помощью Microsoft CDO. Его можно использовать как в 8.х так и в 7.7. Так же поддерживает вложения, копии писем на другие email.

Использовать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");

Пожалуйста лайк, репост

Это тоже интересно

РЕКОМЕНДУЕМ

Интересное