2014-12-06 2 views
6

Ich frage mich, wie ich eine Besprechungsanfrage senden kann, damit GMail sie richtig erkennt?Warum erkennt Google Mail Besprechungsanfrage, die von Code gesendet wird, nicht?

Wenn Sie versuchen, unten als alternative Ansicht mit gewöhnlichem Code (auch unten angegeben) über MailMessage Objekt GMail gegeben iCalendar Besprechungsanfrag Definition senden es wird nicht erkannt Besprechungsanfrag geführt werden:

enter image description here

Aber die Mail mit genau die gleiche Besprechungsanfrage über GMail UI Ergebnisse in erkannten Besprechungsanfrage gesendet! Rätselhaft.

enter image description here

Weiß jemand, was "Magie" Ich vermisse?

Gut zu bemerken, dass Outlook genau die gleiche Besprechungsanfrage korrekt erkennt, die von gegebenem Code gesendet wird. enter image description here

Der Code Mail mit Besprechungsanfrage senden:

class Program 
{ 
    static string From = "[email protected]"; 
    static string TimeFormat = "yyyyMMdd\\THHmmss\\Z"; 
    static string To = "[email protected]"; 

    static void Main(string[] args) 
    { 
     string content = ReadFile("event-template.ics"); 

     content = content.Replace("#TO#", To); 
     content = content.Replace("#FROM#", From); 
     content = content.Replace("#UID#", Guid.NewGuid().ToString().Replace("-", "")); 
     content = content.Replace("#CREATED-AT#", DateTime.UtcNow.AddDays(-1).ToString(TimeFormat)); 
     content = content.Replace("#DTSTART#", DateTime.UtcNow.AddDays(1).ToString(TimeFormat)); 
     content = content.Replace("#DTEND#", DateTime.UtcNow.AddDays(1).AddHours(1).ToString(TimeFormat)); 

     MailMessage message = new MailMessage(); 
     message.From = new MailAddress(From); 
     message.To.Add(new MailAddress(To)); 
     message.Subject = "Meeting Request from Code!"; 

     var iCalendarContentType = new ContentType("text/calendar; method=REQUEST"); 

     var calendarView = AlternateView.CreateAlternateViewFromString(content, iCalendarContentType); 
     calendarView.TransferEncoding = TransferEncoding.SevenBit; 
     message.AlternateViews.Add(calendarView); 

     using (var smtp = new SmtpClient()) 
     { 
      smtp.Send(message); 
     } 
    } 

    public static string ReadFile(string fileName) 
    { 
     using (StreamReader r = new StreamReader(fileName)) 
     { 
      return r.ReadToEnd(); 
     } 
    } 
} 

iCalendar Template-Definition:

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//A//B//EN 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
ORGANIZER;CN="Organizer":mailto:#FROM# 
ATTENDEE;CN="Attendee";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT= 
NEEDS-ACTION;RSVP=TRUE:mailto:#TO# 
DTSTART:#DTSTART# 
DTEND:#DTEND# 
LOCATION:Location test 
TRANSP:OPAQUE 
SEQUENCE:0 
UID:#UID# 
DTSTAMP:#CREATED-AT# 
CREATED:#CREATED-AT# 
LAST-MODIFIED:#CREATED-AT# 
DESCRIPTION:Test description\n 
PRIORITY:5 
CLASS:PUBLIC 
END:VEVENT 
END:VCALENDAR 

UPD. Die Quelle der E-Mail, die von Code generiert und von Google Mail empfangen wurde (nicht von Google Mail als Besprechungsanfrage erkannt): http://pastebin.com/MCU6P16Y.

Die Quelle der E-Mail von GMail während Spedition (anerkannt Correclty) zusammen: http://pastebin.com/zfbbj9Gg

WICHTIG UPDATE.Nur Ziel von meiner E-Mail (<my>@gmail.com) zu meiner Kollegin (<colleague>@gmail.com) ändern und es fängt an, richtig zu erkennen! Jetzt sieht es definitiv wie GMail aus. (Ich sende E-Mail von der Adresse, die sich vom Ziel unterscheidet, sicher)

UPDATE. Gefunden genau das gleiche Problem in GMail-Support-Forum: Bug: Gmail fails to recognize .ics calendar invitations attached to incoming messages. Die Ausgabe vom Juni 2011 und berichtet, wie im Juli 2011 behoben. Ich habe dort ein neues Thema erstellt: GMail fails to recognize *.ics attachment as a meeting request.

+0

Könnten Sie die Quelle der aktuellen E-Mail teilen gesendet? Einschließlich aller Header und Anhänge. – Evert

+0

@Evert, finden Sie die vollständige Quelle der E-Mail hier: http://pastebin.com/MCU6P16Y –

+0

@Evert, ich habe auch die Quelle der weitergeleiteten E-Mail hinzugefügt. –

Antwort

2

Es scheint, dass das Problem nicht darin besteht, dass GMAIL die Besprechungsanfrage erkennt, aber Probleme bei der Anzeige hat. Ich wurde von demselben Problem gestört.

Es wurde "behoben", nachdem ich die GMAIL-Anzeigesprache im Einstellungsmenü auf "Englisch (US)" geändert hatte.

Also ist es definitiv ein Fehler.

0

Wenn Sie C# verwenden konnte ich diese Arbeit Outlook Web bekommen, gmail, Ausblick 2016.

Was es Sie eine alternative Ansicht tun müssen angezeigt werden, hinzuzufügen, das nicht Sie zu arbeiten scheint, wenn haben mehrere Ansichten, funktioniert aber für Ihr Beispiel oben.

Die alternative Ansicht unten:

    var ct = new ContentType("text/calendar"); 

        if (ct.Parameters != null) 
        { 
         ct.Parameters.Add("method", "REQUEST"); 
         ct.Parameters.Add("charSet", "utf-8"); 

         var avCal = AlternateView.CreateAlternateViewFromString(calendarAppt.ToString(), ct); 
         avCal.TransferEncoding = TransferEncoding.Base64; 
         mail.AlternateViews.Add(avCal); 
        } 
Verwandte Themen