Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谷歌日历问题-界面和导入_C#_Asp.net_Email_Calendar_Google Calendar Api - Fatal编程技术网

C# 谷歌日历问题-界面和导入

C# 谷歌日历问题-界面和导入,c#,asp.net,email,calendar,google-calendar-api,C#,Asp.net,Email,Calendar,Google Calendar Api,我有一个创建会议的应用程序,我通过创建一个.ics文件实现了一种用户同步其他人日历的方法 第一个问题是:当用户收到一封附有.ics文件的电子邮件时,向用户请求一个接受框来同步电子邮件日历 但当组织者是谷歌用户时,谷歌日历的界面不显示接受界面按钮,只显示要下载的.ics文件 第二个问题是GOOGLE日历的导入方法,当我尝试导入我的.ics生成文件时,GOOGLE日历不会加载与会者 你在我的generate.ics文件中看到任何错误吗?这在Thunderbird/Outlook中工作正常,只有在Go

我有一个创建会议的应用程序,我通过创建一个.ics文件实现了一种用户同步其他人日历的方法

第一个问题是:当用户收到一封附有.ics文件的电子邮件时,向用户请求一个接受框来同步电子邮件日历

但当组织者是谷歌用户时,谷歌日历的界面不显示接受界面按钮,只显示要下载的.ics文件

第二个问题是GOOGLE日历的导入方法,当我尝试导入我的.ics生成文件时,GOOGLE日历不会加载与会者

你在我的generate.ics文件中看到任何错误吗?这在Thunderbird/Outlook中工作正常,只有在Google日历中我有这2个问题,这是Google日历的一个bug

请参阅我的代码和generate.ics文件

    public string RENDERMail()
    {
        //Monta o email
        StringBuilder lMail_Ics = new StringBuilder();

        //Cabeçalho
        lMail_Ics.AppendLine("BEGIN:VCALENDAR");
        lMail_Ics.AppendLine("PRODID:AV-Calendar");
        lMail_Ics.AppendLine("VERSION:2.0");
        lMail_Ics.AppendLine("METHOD:REQUEST");
        lMail_Ics.AppendLine("TZ:+00");
        //Abre o bloco
        lMail_Ics.AppendLine("BEGIN:VEVENT");

            //Adiciona os campos
            lMail_Ics.AppendLine("UID:" + UId + "@ambientesvirtuais.com.br");
            lMail_Ics.AppendLine("DTSTAMP:" + DateAdd.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
            lMail_Ics.AppendLine("CREATED:" + DateAdd.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
            lMail_Ics.AppendLine("DTSTART:" + DateIni.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
            lMail_Ics.AppendLine("DTEND:" + DateEnd.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
            lMail_Ics.AppendLine("LAST-MODIFIED:" + DateUpd.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
            lMail_Ics.AppendLine("SUMMARY:" + Summary);
            lMail_Ics.AppendLine("LOCATION:" + Location);
            lMail_Ics.AppendLine("DESCRIPTION:" + Description);
            lMail_Ics.AppendLine("ORGANIZER;RSVP=TRUE;CN=" + Organizer.Name + ";PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:" + Organizer.Mail);

            //Roda em todos os itens da lista
            foreach (TCalendarMail lAttendee in Attendee)
            {
                //Adiciona os participantes
                lMail_Ics.AppendLine("ATTENDEE;RSVP=TRUE;CN=" + lAttendee.Name + ";PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:" + lAttendee.Mail);
            }
            
            //Adiciona o campo
            if (Sequence > 0) lMail_Ics.AppendLine("SEQUENCE:" + Sequence);

        //Fecha o bloco
        lMail_Ics.AppendLine("END:VEVENT");
        lMail_Ics.AppendLine("END:VCALENDAR");

        //Retorna os valores
        return lMail_Ics.ToString();
    }

BEGIN:VCALENDAR
PRODID:AV-Calendar
VERSION:2.0
METHOD:REQUEST
TZ:+00
BEGIN:VEVENT
UID:Meeting-93655@ambientesvirtuais.com.br
DTSTAMP:20200921T192500Z
CREATED:20200921T192500Z
DTSTART:20200922T190000Z
DTEND:20200922T200000Z
LAST-MODIFIED:20201002T194900Z
SUMMARY:Reu Z
LOCATION:
DESCRIPTION:
ORGANIZER;RSVP=TRUE;CN=Pss Gmail;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:test01@gmail.com
ATTENDEE;RSVP=TRUE;CN=José Proença;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:otavio@uol.com
ATTENDEE;RSVP=TRUE;CN=Pss Gmail;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:test01@gmail.com
SEQUENCE:10
END:VEVENT
END:VCALENDAR

通过
.ics
文件导入的事件不会保留与会者。这是预期行为(例如,参见)。您可能希望在Issue Tracker中为此提交功能请求。关于你的第一期,我无法复制。你注意到不同客户的这种情况了吗?这可能与特定帐户的设置有关。很容易复制我的第一期。-在任何应用程序中创建会议,不包括谷歌日历。-通过gmail电子邮件成为本次会议的组织者-通过电子邮件将本次会议发送至您的gmail-当您通过gmail界面收到此电子邮件时,与google日历同步的界面按钮不会显示如何检查此问题-执行相同的步骤,但不要将组织者设置为gmail-将组织者设置为您gmail帐户的任何其他电子邮件-将您的gmail帐户作为与会者-发送电子邮件,并查看要同步的界面按钮在电子邮件中的显示方式
我无法复制
我的意思是我遵循了您提到的所有步骤,没有体验到与您相同的行为。在我的例子中,用户是否是组织者并不重要:“接受框”总是存在的。这就是为什么我问你,你是否注意到不同的帐户。那么,你注意到不同账户的这种行为了吗?你有什么类型的账户?