Имя: Пароль:
1C
 
1c8 и Icalendar
0 Greeen
 
08.10.15
16:57
Добрый день! Господа, никто не сталкивался с созданием встреч в Outlook через Icalendar формат? Что то не дается, письмо с виду вроде более-менее нормально уходит, но в Outlook пишет, что Не удается найти событие в календаре =(

Листинг:

ТекстТемы = "Отпуск сотрудника ";
ТекстСообщения = "BEGIN:VCALENDAR
|VERSION:2.0
|PRODID:-dff
|METHOD:REQUEST
|BEGIN:VEVENT
|UID:" + ТекущаяДата() + "
|DTSTAMP:20150907T121816Z
|DTSTART:20151022T090000
|DTEND:20151022T100000
|SUMMARY:TEST
|DESCRIPTION: test
|END:VEVENT
|END:VCALENDAR";

ДД = новый ТекстовыйДокумент;
Дд.УстановитьТекст(ТекстСообщения);
Дд.Записать(КаталогВременныхФайлов() + "calendar.ics");

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 = 30;    
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.BodyPart.Charset = "utf-8";
iMsg.Fields.Item("urn:schemas:mailheader:content-type").Value = "text/calendar";
iMsg.Fields.Item("urn:schemas:mailheader:Content-Disposition").Value = "inline; filename=calendar.ics";

Попытка
    iMsg.Configuration.Fields.Update();
Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;

iMsg.DSNOptions = 2;
iMsg.To = "";//соотв. адрес
iMsg.From = Константы.АдресЭлектроннойПочты.Получить();
iMsg.Subject = "test";
iMsg.HTMLBody = "<b> Привет!</b>";
iMsg.addAttachment(КаталогВременныхФайлов() + "calendar.ics");

Попытка
    iMsg.Send();
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;
1 Лефмихалыч
 
08.10.15
17:06
выгрузи такое же событие из аутлука в icalendar и сравни
2 Greeen
 
12.10.15
12:48
(1) Спасибо! Дело в хедерах все было сообщения этого.
На всякий случай, рабочий листинг кода оставляю

ТекстТемы = "Отпуск сотрудника ";

    ТекстСообщения = "BEGIN:VCALENDAR
    |VERSION:2.0
    |PRODID:Microsoft Exchange Server 2010
    |METHOD:REQUEST
    |BEGIN:VEVENT
    |UID:test" + ТекущаяДата() + "
    |ORGANIZER:MAILTO: <ящик>
    |STATUS:DRAFT
    |CLASS:PUBLIC
    |DTSTAMP:20151001T121816Z
    |DTSTART:20151001T090000
    |DTEND:20151022T100000
    |SUMMARY: Всем привет!
    |DESCRIPTION: Баден=баден
    |END:VEVENT
    |END:VCALENDAR";

iMsg = Новый COMОбъект("CDO.Message");
MailConfig = Новый COMОбъект("CDO.Configuration");
iMsg.Configuration = MailConfig;

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 = 30;    
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;

MailConfig.Fields.Update();

iMsg.DSNOptions = 2;
iMsg.To = <ящик>;//соотв. адрес

iMsg.From = Константы.АдресЭлектроннойПочты.Получить();
iMsg.Subject = "test";
iMsg.textbody =ТекстСообщения;
iMsg.Fields.Item("urn:schemas:mailheader:content-type").value = "text/calendar; method=REQUEST; charset=""utf-8""";

iMsg.Fields.Update();
iMsg.Fields.Resync();


Попытка
    iMsg.Send();
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;