生成 iCal 事件并将其发送到 Outlook
Generate and send iCal event to outlook
我正在使用 DDay.iCal(1.0.2.575,来自 nuget)生成电子邮件事件。
我使用以下代码生成事件:
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("some@address.com");
iCalendarSerializer serializer = new iCalendarSerializer(iCal);
string eventCode = serializer.SerializeToString(calendarEvent);
然后我使用下面的代码发送它
SmtpClient smtpClient = new SmtpClient("smtp.someaddress.com");
MailMessage message = new MailMessage
{
From = new MailAddress("some@address.com", "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("some@adderss.com"));
message.Attachments.Add(attachment);
smtpClient.Send(message);
输出为
BEGIN:VEVENT
DESCRIPTION:Test
DTEND:20150701T104500
DTSTAMP:20150605T082404Z
DTSTART:20150701T100000
DURATION:PT45M
LOCATION:Test
ORGANIZER:mailto:some@address.com
SEQUENCE:0
SUMMARY:Test
UID:dd175008-a4be-4fcf-a153-baff29ef5b8a
END:VEVENT
但是 outlook 2010 只是说 The operation failed.
并且 gmail 显示一个日历符号但是如果我点击它什么也没有发生,如果我点击附加的 .ics 文件它不知道如何处理它..
我缺少什么来完成这项工作?
我发现错误,将行 string eventCode = serializer.SerializeToString(calendarEvent);
更改为 string eventCode = serializer.SerializeToString(iCal);
并且有效!
我正在使用 DDay.iCal(1.0.2.575,来自 nuget)生成电子邮件事件。 我使用以下代码生成事件:
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("some@address.com");
iCalendarSerializer serializer = new iCalendarSerializer(iCal);
string eventCode = serializer.SerializeToString(calendarEvent);
然后我使用下面的代码发送它
SmtpClient smtpClient = new SmtpClient("smtp.someaddress.com");
MailMessage message = new MailMessage
{
From = new MailAddress("some@address.com", "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("some@adderss.com"));
message.Attachments.Add(attachment);
smtpClient.Send(message);
输出为
BEGIN:VEVENT
DESCRIPTION:Test
DTEND:20150701T104500
DTSTAMP:20150605T082404Z
DTSTART:20150701T100000
DURATION:PT45M
LOCATION:Test
ORGANIZER:mailto:some@address.com
SEQUENCE:0
SUMMARY:Test
UID:dd175008-a4be-4fcf-a153-baff29ef5b8a
END:VEVENT
但是 outlook 2010 只是说 The operation failed.
并且 gmail 显示一个日历符号但是如果我点击它什么也没有发生,如果我点击附加的 .ics 文件它不知道如何处理它..
我缺少什么来完成这项工作?
我发现错误,将行 string eventCode = serializer.SerializeToString(calendarEvent);
更改为 string eventCode = serializer.SerializeToString(iCal);
并且有效!