c# - 为什么 GMail 无法识别代码发送的 session 请求?

标签 c# email outlook gmail icalendar

我想知道如何发送 session 请求让GMail正确识别?

如果您尝试通过 MailMessage 发送 iCalendar session 请求定义作为替代 View ,使用习惯代码(也在下面给出)反对 GMail 将导致无法识别的 session 请求:

enter image description here

但是通过 GMail UI 发送的带有完全相同的 session 请求 的邮件会导致被识别的 session 请求!令人费解。

enter image description here

有人知道我错过了什么“魔法”吗?

很高兴注意到 Outlook 正确地识别了由给定代码发送的完全相同的 session 请求。 enter image description here

发送 session 请求邮件的代码:

class Program
{
    static string From = "sender@example.com";
    static string TimeFormat = "yyyyMMdd\\THHmmss\\Z";
    static string To = "target@example.dom";

    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 模板定义:

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. 由代码生成并由 GMail 接收的电子邮件来源(GMail 未将其识别为 session 请求):http://pastebin.com/MCU6P16Y .

GMail 转发时生成的邮件来源(正确识别):http://pastebin.com/zfbbj9Gg

重要更新。只是将目标从我的电子邮件 (<my>@gmail.com) 更改为我同事的电子邮件 (<colleague>@gmail.com) 并且它 < strong>开始正确识别!现在看起来确实像是 GMail 问题。 (当然,我从与目标不同的地址发送电子邮件)

更新。在 GMail 支持论坛中发现完全相同的问题:Bug: Gmail fails to recognize .ics calendar invitations attached to incoming messages .该问题的日期为 2011 年 6 月,并报告为固定到 2011 年 7 月。我在那里创建了新主题:GMail fails to recognize *.ics attachment as a meeting request .

最佳答案

问题似乎不是 GMAIL 识别 session 请求,而是显示它的问题。我被同样的问题困扰。

在我从“设置”菜单将 GMAIL 显示语言更改为“英语(美国)”后,该问题已“修复”。

所以这绝对是一个错误。

关于c# - 为什么 GMail 无法识别代码发送的 session 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27334606/

相关文章:

python - 如何使用当前的电子邮件库附加txt文件?

php - 无法使用 PHP SMTP 发送电子邮件,无法发送 AUTH LOGIN 命令。错误

java - iCal4J 生成的 Outlook 无法识别 .ics 文件中的时区

c# - vsto + 无法从 RTF 电子邮件中获取附件的文件名

c# - 与外部系统连接 |如何设计系统

c# - TCPClient没有网卡能用吗?

c# - 绑定(bind)到 ViewModel 的 ObservableCollection 类型的附加属性始终返回 null

php - 在 PHP 中查找和替换电子邮件和电话号码

vba - 将已发送项目的副本保存在特定文件夹中

c# - 跨线程错误,但没有使用线程