Имя: Пароль:
1C
1С v8
Отправка почты через 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С