Отправка почты через CDO.Message
☑
0
undertaker
14.02.12
✎
13:26
добрый день.
Пытаюсь наладить отправку почты через CDO.Message (типовые возможности 1С не поддерживают нужную авторизацию). вот такой текст
ТабОтчет = Документы.Заявка.ПечатьЗаявка(МассивДокументов, Неопределено);
ИмяФайла = Новый УникальныйИдентификатор;
ИмяФайла = КаталогВременныхФайлов() + ИмяФайла + ".html";
Файл = Новый Файл(ИмяФайла);
Если Файл.Существует() Тогда
Попытка
УдалитьФайлы(ИмяФайла);
Исключение
КонецПопытки;
КонецЕсли;
Текст = Новый ТекстовыйДокумент();
Попытка
ТабОтчет.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.HTML4);
Текст.Прочитать(ИмяФайла);
Исключение
Текст.ДобавитьСтроку("Не удалось сохранить/прочитать файл отчета!");
Неудача = Истина;
КонецПопытки;
СистемнаяУчетнаяЗапись = РаботаСПочтовымиСообщениями.ПолучитьСистемнуюУчетнуюЗапись();
Если НЕ СтрокаВнешнихПолучателей = "" Тогда
iMsg = Новый COMОбъект("CDO.Message");
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = СистемнаяУчетнаяЗапись.СерверИсходящейПочтыSMTP;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = СистемнаяУчетнаяЗапись.ПортSMTP;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 2; // 0 - Do not authenticate; 1 - basic (clear-text) authentication; 2 - NTLM
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = СистемнаяУчетнаяЗапись.ВремяОжидания;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = СистемнаяУчетнаяЗапись.ПользовательSMTP;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = СистемнаяУчетнаяЗапись.ПарольSMTP;
iMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 1;
Попытка
iMsg.Configuration.Fields.Update();
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
iMsg.DSNOptions = 2;
iMsg.To = СтрокаВнешнихПолучателей;
iMsg.From = СистемнаяУчетнаяЗапись.АдресЭлектроннойПочты;
iMsg.Subject = Строка(Заявка);
iMsg.HTMLBody = Текст.ПолучитьТекст();
//iMsg.addAttachment(ИмяФайла);
Попытка
iMsg.Send();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
при этом на гмэил нормально все приходит, а в аутлук на корпоративную почту - в корявой кодировке. Как можно исправить?
1
undertaker
14.02.12
✎
15:38
вопрос решился добавлением
iMsg.HTMLBodyPart.Charset = "windows-1251";
2
Леха Дум
14.02.12
✎
15:44
стоит вписать код в книгу знаний
3
andrewks
14.02.12
✎
15:46
(2) было уже, вроде
4
undertaker
14.02.12
✎
15:59
кстати, отправка этим способом гораздо быстрее работает, чем отправка штатными средствами 1С
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший