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