2015-06-05 2 views
0

Im, используя DDay.iCal (1.0.2.575, из nuget), чтобы создать событие электронной почты. Im используя следующий код для генерации события:Создайте и отправьте событие iCal на внешний вид

iCalendar iCal = new iCalendar 
{ 
    Method = "PUBLISH", 
    Version = "2.0" 
}; 
//REQUEST for update 
Event calendarEvent = iCal.Create<Event>(); 
calendarEvent.Summary = "Test"; 
calendarEvent.Start = new iCalDateTime(new DateTime(2015, 7, 1, 10, 0, 0)); 
calendarEvent.Duration = new TimeSpan(0, 45, 0); 
calendarEvent.Description = "Test"; 
calendarEvent.Location = "Test"; 
calendarEvent.IsAllDay = false; 
calendarEvent.UID = Guid.NewGuid().ToString(); 
calendarEvent.Organizer = new Organizer("[email protected]"); 

iCalendarSerializer serializer = new iCalendarSerializer(iCal); 
string eventCode = serializer.SerializeToString(calendarEvent); 

, а затем им, используя следующий код, чтобы отправить его

SmtpClient smtpClient = new SmtpClient("smtp.someaddress.com"); 
MailMessage message = new MailMessage 
{ 
    From = new MailAddress("[email protected]", "Someone"), 
    Subject = "Test", 
    Body = "Test" 
}; 
System.Net.Mail.Attachment attachment = System.Net.Mail.Attachment.CreateAttachmentFromString(eventCode, "test.ics"); 
attachment.ContentType = new System.Net.Mime.ContentType("text/calendar"); 
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 
message.CC.Add(new MailAddress("[email protected]")); 
message.Attachments.Add(attachment); 
smtpClient.Send(message); 

и выход

BEGIN:VEVENT 
DESCRIPTION:Test 
DTEND:20150701T104500 
DTSTAMP:20150605T082404Z 
DTSTART:20150701T100000 
DURATION:PT45M 
LOCATION:Test 
ORGANIZER:mailto:[email protected] 
SEQUENCE:0 
SUMMARY:Test 
UID:dd175008-a4be-4fcf-a153-baff29ef5b8a 
END:VEVENT 

Но прогноз 2010 раз говорит The operation failed., и gmail показывает символ календаря, но ничего не происходит, если я нажму на него, также если я щелкнул прикрепленный файл .ics, он не знает, что с ним делать.

Что мне недостает, чтобы сделать эту работу?

ответ

2

Я нашел ошибку, изменив строку string eventCode = serializer.SerializeToString(calendarEvent); на string eventCode = serializer.SerializeToString(iCal);, и она работает!