Имя: Пароль:
1C
 
Уведомление о прочтении/доставке почты в 1С 8.1
0 Romasini
 
09.12.10
16:41
Есть проблема: нужно при отправлении интернет почтовых сообщений из 1С 8.1 чтобы у получателя создавались уведомления о прочтении/доставке и слались на третий ящик (т.е. подставлялся другой адрес получателя уведомления).
Код такой:

ЭлПисьмо = Новый ИнтернетПочтовоеСообщение;
ЭлПисьмо.Тема = "Отправка"+ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект)+" по почте "+ЭтотОбъект.Организация.НаименованиеПолное;
ЭлПисьмо.ИмяОтправителя = УчетнаяЗапись.АдресЭлектроннойПочты;
ЭлПисьмо.Отправитель.Адрес = УчетнаяЗапись.АдресЭлектроннойПочты;
ЭлПисьмо.ОбратныйАдрес.Добавить(УчетнаяЗапись.АдресЭлектроннойПочты);
ЭлПисьмо.УведомитьОДоставке = Истина;
ЭлПисьмо.УведомитьОПрочтении = Истина;
ЭлПисьмо.АдресаУведомленияОДоставке.Добавить("третийящик@gmail.com");
ЭлПисьмо.АдресаУведомленияОПрочтении.Добавить("третийящик@gmail.com");
ЭлПисьмо.Получатели.Добавить(АдресПочты);
ЭлПисьмо.Вложения.Добавить(имяФайла,); // удача !!!
ЭлПисьмо.Организация = ЭтотОбъект.Организация;
Попытка
   ИнтернетПочта.Послать(ЭлПисьмо);
   Сообщить("Письмо ушло на ящик "+АдресПочты+" в "+Формат(ТекущаяДата(),"ДЛФ=DDT"));
               
Исключение
   Сообщить("При отсылке 'Интернет почтового сообщения' по 'ИнтернетПочте' возникла Ошибка:");
       Сообщить("Системное описание:");
   Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
КонецПопытки;
УдалитьФайлы(ИмяФайла, );
ИнтернетПочта.Отключиться();

но результата нет: письмо получателю (мой другой ящик) приходит, но никаких следов попыток отправить уведомление нет, ни в исходящих, ни в отправленных...
В интернете искал какие то решения, но как то не нашел. Как сделать это? Заранее, спасибо.
1 Romasini
 
24.12.10
12:56
решение нашел, но работает оно как то странно:

Письмо = Новый COMОбъект("CDO.Message");
Письмо.To    = АдресПочты;
Письмо.From    = УчетнаяЗапись.АдресЭлектроннойПочты;
Письмо.Subject    = "Такая тема";
Письмо.TextBody    = "Письмо отправлено автоматически, пожалуйста, не отвечайте на него.";
Письмо.BodyPart.CharSet = "utf-8"; //для цивильной кодировки сообщения
Письмо.DSNOptions = 14;//для получения уведомления о доставке и прочтении
Письмо.Fields("urn:schemas:mailheader:disposition-notification-to").Value = УчетнаяЗаписьПолучателя.АдресЭлектроннойПочты;
Письмо.Fields("urn:schemas:mailheader:return-receipt-to").Value = УчетнаяЗаписьПолучателя.АдресЭлектроннойПочты;
Письмо.AddAttachment(ИмяФайла);//вложение
Письмо.Fields.Update();
                   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value        = 2;//использовать smtp
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value        = СокрЛП(УчетнаяЗапись.SMTPСервер);
                   //Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value= Аутентификация;
                   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value    = СокрЛП(УчетнаяЗапись.ЛогинSMTP);
                   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value    = СокрЛП(УчетнаяЗапись.ПарольSMTP);
                   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = УчетнаяЗапись.ПортSMTP;
                   Письмо.Configuration.Fields.Update();
Письмо.Send();

В чем странность: в моем случае отправляются уведомления о прочтении, а о доставке нет, а у других, кто реализовывал сие, наоборот: скорее всего тут важны настройки MS Exchange, хотя фиг его знает
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.