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

Разберем несложный код для отправки 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");

Спасибо!

Теперь редакторы в курсе.