2014-12-06 8 views
6

Mi chiedo come inviare una richiesta di riunione per consentire a GMail di riconoscerlo correttamente?Perché GMail non riconosce la richiesta di riunione inviata dal codice?

Se si tenta di inviare iCalendar richiesta di riunione definizione data muggito come un punto di vista alternativo utilizzando il codice abituale (data anche sotto) tramite MailMessage oggetto di GMail che sarà portato a richiesta di riunione non riconosciuto:

enter image description here

Ma la mail con esattamente la stessa richiesta di riunione inviata tramite l'interfaccia utente di GMail risulta nella richiesta di riunione riconosciuta! Sconcertante.

enter image description here

Qualcuno sa che cosa "magica" che mi manca?

Buono a notare che Outlook riconosce correttamente esattamente la stessa richiesta di riunione inviata da un determinato codice. enter image description here

Il codice per trasmettere la posta con richiesta di riunione:

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 definizione del modello:

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. La fonte di posta elettronica generata dal codice e ricevuta da GMail (non riconosciuta da GMail come richiesta di riunione): http://pastebin.com/MCU6P16Y.

La fonte della posta elettronica composto da GMail durante spedizioni (correclty riconosciuto): http://pastebin.com/zfbbj9Gg

IMPORTANTE AGGIORNAMENTO.Basta cambiare bersaglio dalla mia e-mail (<my>@gmail.com) per uno del mio collega (<colleague>@gmail.com) ed inizia a riconoscere correttamente! Ora sembra decisamente un problema con GMail. (sto inviando email dall'indirizzo diverso dalla destinazione, certo)

AGGIORNAMENTO. Trovato esattamente lo stesso problema nel forum di supporto di GMail: Bug: Gmail fails to recognize .ics calendar invitations attached to incoming messages. Il problema è datato giugno 2011 e riportato come risolto a luglio 2011. Ho creato un nuovo argomento lì: GMail fails to recognize *.ics attachment as a meeting request.

+0

Potrebbe condividere la fonte del messaggio attuale viene inviato? Comprese tutte le intestazioni e gli allegati. – Evert

+0

@Evert, puoi trovare la fonte completa di e-mail qui: http://pastebin.com/MCU6P16Y –

+0

@Evert, ho anche aggiunto la fonte di e-mail inoltrata. –

risposta

2

Sembra che il problema non riguardi GMAIL che riconosce la richiesta di riunione, ma che presenta problemi durante la visualizzazione. Sono stato infastidito dallo stesso problema.

È stato "risolto" dopo aver modificato la lingua di visualizzazione GMAIL in "Inglese (USA)" dal menu Impostazioni.

Quindi è sicuramente un bug.

0

Se stai usando C# sono riuscito ad ottenere questo web prospettive di lavoro, gmail, outlook 2016.

quello che sembra quello che dovete fare è aggiungere una visualizzazione alternativa, questo non sembra funzionare quando si avere più viste ma funziona per il tuo esempio sopra.

La visione alternativa di seguito:

    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); 
        } 
Problemi correlati