Имя: Пароль:
1C
1C 7.7
v7: CDO.Message как задать кодировку текста сообщение
0 pvase
 
09.02.12
17:34
Вот код обработки:

// ===============================
Процедура Сформировать()
   // От кого отправляем и через какой логин
   EmeilОт = "@mail.ru";
   // Кому отправляем - email
   EmeilКому = "Мне@mail.ru";
   // Сервер SMTP
   СерверSMTP = "smtp.mail.ru";
   // Порт SMTP
   ПортSMTP = 25;
   
   // Логин на SMTP
   ЛогинSMTP = "Логин@mail.ru";
   // Пароль на SMTP
   ПарольSMTP = "passwort";
       
   loConfig = CreateObject("CDO.Configuration");
   loCdoMessage = CreateObject("CDO.Message");
   
   loCdoMessage.Configuration = loConfig;
   loCdoMessage.From = EmeilОт;
   loCdoMessage.To = EmeilКому;
   loCdoMessage.Subject = "Проверка кодировки";
   
   ТекстСообщения = "Проверка кодировки";
   HTMLBody = "<html>
   |<head>
   |    <meta content=""text/html; charset=Windows-1251"" http-equiv=""content-type"">
   |<title> Тестовое сообщение </title>
   |</head>
   |<body>
   |<h3>" + ТекстСообщения + "</h3>
   |<p></p>
   |</body>
   |</html>";
   
   loCdoMessage.HTMLBody = HTMLBody;
   //loCdoMessage.AddAttachment(ВложениеПисьма);
   
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = СерверSMTP;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = ПортSMTP;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = ЛогинSMTP;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = ПарольSMTP;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 0;
   loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
   loConfig.Fields.Update();
   loCdoMessage.Send();
   
КонецПроцедуры

Не хочет отправлять почту в кодировке Кирилица 1251, приходит письмо с нечитаемыми символами. Вот здесь пример обработки: http://www.rapidshare.ru/2773279
1 andrewks
 
09.02.12
17:36
ну вот же ты её задаешь: charset=Windows-1251
2 pvase
 
09.02.12
17:37
(1) Но письмо приходит не в 1251, а в нечитаемом виде, даже если сохранить текст письма и откріть в браузере - не получиться прочитать, даже задав принудительно кодировку 1251.
3 pvase
 
09.02.12
17:58
Если тот же текст прилепить как Attachment (вложение) то все нормально отображается.
4 pvase
 
09.02.12
17:59
Вот такой код если вставить, то вложение отображается как надо:
ТекТекст = СоздатьОбъект("Текст");
   ТекТекст.ДобавитьСтроку(ТекстСообщения);
   ФайлСообщ = КаталогВременныхФайлов()+"Письмо.html";
   ТекТекст.Записать(ФайлСообщ);
               
   loCdoMessage.AddAttachment(ФайлСообщ);
5 PZh
 
09.02.12
18:04
Отправь аналогичное сообщение в аналогичной кодировке твоим почтовым клиентом и сравни текст заголовка, чего не хватит - добавь.
6 pvase
 
09.02.12
18:13
Нашел, вот что надо было добавить:
loCdoMessage.BodyPart.Charset = "windows-1251";
Программист всегда исправляет последнюю ошибку.