2015-10-07 47 views
0

如何在C#中使用Sendgrid發送日曆邀請?在Sendgrid中附加ics文件

我可以將ics文件附加到郵件中,但是當我下載附件時,出現「無效日曆文件」錯誤。

string CalendarContent = "BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Meeter/meeter//NONSGML v1.0//EN CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT DTSTART:20141018T203000Z DTEND:20141018T210000Z UID:[email protected] DTSTAMP:20141014T212813Z ORGANIZER;CN=\"[email protected]\";SENT-BY=\"MAILTO:[email protected]\";LANGUAGE=se:MAILTO:[email protected] ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Fessy M;X-NUM-GUESTS=0:MAILTO:[email protected] DESCRIPTION:dddd mandrill LOCATION:dddddd mandrill SUMMARY:Can I lay low? Cook some yay-yo 2 TRANSP:OPAQUE SEQUENCE:0 STATUS:CONFIRMED END:VEVENT END:VCALENDAR"; 

using (MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(CalendarContent))) 
        { 
         _Message.AddAttachment(ms, "meeting.ics"); 
        } 
        var Header = new Dictionary<string, string>(); 
        Header.Add("Content-Type", "text/calendar"); 
+0

你們是不是要發送日曆通過電子郵件邀請或從網頁上下載? –

回答

0

如果你試圖發送一個日曆,你需要做到以下幾點:

// you already have the _Message & CalendarContent created above 

// first thing, convert calendar content to byte array and then stream 
byte[] calendarBytes = Encoding.UTF8.GetBytes(CalendarContent.ToString()); 
Stream calendarStream = new MemoryStream(calendarBytes); 

// them create a attachment for your mail message 
Attachment calendarAttachment = new Attachment(calendarStream, "calendar.ics", "text/calendar"); 
calendarAttachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 

// now attach the calendar to your Mail Message 
_Message.Attachments.Add(calendarAttachment); 

// now send the message off 
+0

無法添加上面的附件。文檔說你必須使用'AddAttachment()'方法。但是,然後,我無法設置MimeType – Belicosus

+0

此答案似乎使用SMTPClient和System.Net.Mail類使用SendGrid憑據發送電子郵件。原來的問題似乎是使用SendGrid C#客戶端API庫之一。這就是爲什麼Belicosus說文檔使用AddAttachment()並且Black Frog提供的答案使用_Message.Attachments.Add() –

0

有幾件事情。

首先CalendarContent看起來不合法,它沒有任何換行符。

首先嚐試:

string CalendarContent = @"BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//Meeter/meeter//NONSGML v1.0//EN 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20141018T203000Z 
DTEND:20141018T210000Z 
UID:[email protected] 
DTSTAMP:20141014T212813Z 
ORGANIZER;CN=\"[email protected]\";SENT-BY=\"MAILTO:[email protected]\";LANGUAGE=se:MAILTO:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Fessy M;X-NUM-GUESTS=0:MAILTO:[email protected] 
DESCRIPTION:dddd mandrill 
LOCATION:dddddd mandrill 
SUMMARY:Can I lay low? Cook some yay-yo 2 
TRANSP:OPAQUE 
SEQUENCE:0 
STATUS:CONFIRMED 
END:VEVENT 
END:VCALENDAR"; 

如果不工作,它會出現以下不遵循RFC 5545但我不看好這一點,RFC可能會造成混淆:

ORGANIZER;CN=\"[email protected]\";SENT-BY=\"MAILTO:[email protected]\";LANGUAGE=se:MAILTO:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Fessy M;X-NUM-GUESTS=0:MAILTO:[email protected] 

可能是:

ORGANIZER;LANGUAGE=se:SENT-BY=\"mailto:[email protected]\":mailto:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Fessy M;X-NUM-GUESTS=0:mailto:[email protected]