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:
Ma la mail con esattamente la stessa richiesta di riunione inviata tramite l'interfaccia utente di GMail risulta nella richiesta di riunione riconosciuta! Sconcertante.
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.
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.
Potrebbe condividere la fonte del messaggio attuale viene inviato? Comprese tutte le intestazioni e gli allegati. – Evert
@Evert, puoi trovare la fonte completa di e-mail qui: http://pastebin.com/MCU6P16Y –
@Evert, ho anche aggiunto la fonte di e-mail inoltrata. –