我正在try 生成ICS文件,该文件将作为我的邮箱的附件.我想在邮箱中添加一个按钮,当点击该按钮时,会将我们带到Gmail(可能是询问Gmail用户名,我们需要在其中添加事件),并将其添加到Gmail日历中.我找不到这样的东西.有谁能帮忙吗?

    StringBuilder sb = new StringBuilder();
    sb.AppendLine("BEGIN:VCALENDAR");
    sb.AppendLine("VERSION:2.0");
    sb.AppendLine("PRODID:Domain.com");
    sb.AppendLine("CALSCALE:GREGORIAN");
    sb.AppendLine("METHOD:REQUEST");
    sb.AppendLine("BEGIN:VEVENT");
    sb.AppendLine("UID:" + guid);
    sb.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", retailStore.LocationEmail));
    sb.AppendLine(string.Format("ATTENDEE;CN='{0}, {1}';ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE:MAILTO:{2}", CustomerFirstName, CustomerLastName, CustomerEmail));
    sb.AppendLine("DTSTART:" + DateStart.ToUniversalTime().ToString(DateFormat));
    sb.AppendLine("DTSTAMP:" + now);
    sb.AppendLine("SUMMARY: " + Summary);
    sb.AppendLine("LOCATION: " + Location);
    sb.AppendLine("DESCRIPTION:" + Description);
    sb.AppendLine("PRIORITY:5");
    sb.AppendLine("TRANSP:OPAQUE");
    sb.AppendLine("END:VEVENT");
    sb.AppendLine("END:VCALENDAR");

    var calendarBytes = Encoding.UTF8.GetBytes(sb.ToString());
    System.IO.MemoryStream stream = new System.IO.MemoryStream(calendarBytes);
    Attachment attachment = new Attachment(stream, FileName, "text/calendar");
    customerMailMessage.Attachments.Add(attachment);

推荐答案

如果消息收件人正在使用Gmail,当ICS文件在他们的收件箱中正确创建时,他们将看到一个添加事件的选项.

ICS view in gmail inbox

其他邮箱客户端可能(但不总是)也支持这一点,但收件人的体验可能会有所不同,活动可能会保存在谷歌以外的日历中,具体取决于用户的配置.

如果你想在谷歌日历中加入一个按钮来创建活动,你可以生成如下链接:

https://www.google.com/calendar/render?action=TEMPLATE&text=MyEvent&details=Description&location=London&dates=20230719T205300Z%2F20230720T205300Z&add=you@example.com

参数:

  • 文本:事件名称
  • 详细信息:活动描述
  • 地点:活动地点
  • 日期:以ISO 8601格式表示的开始和结束日期(由%2F字符[HTML encoding]中的/)分隔)
  • 添加:活动嘉宾的邮箱地址

所有参数都是可选的,用户必须自己确认事件.他们将成为组织者,可以删除您、更改所有设置等.

请记住,此链接与您正在创建的ICS文件没有任何关系!

Csharp相关问答推荐

元素存在方法是否损坏

错误NU 1301:无法加载源的服务索引

C#类主构造函数中的调试参数

TDLib与机器人共享电话号码

迭代C#List并在数据库中 for each 元素执行SELECT语句—更有效的方式?

如何修改中间件或其注册以正确使用作用域服务?

在C#中,DirectoryEntry返回空AuditRules集合,即使审计规则确实存在

选取器与.NET Maui MVVM的绑定属性

如何使用C#Interop EXCEL创建度量衡

如何在不考虑年份的情况下判断日期时间是否在某个日期范围内?

在路由中使用枚举

在.NET核心项目中创建Startup.cs比在Program.cs中注册服务好吗?

StackExchange.Redis.RedisServerException:调用ITransaction.ExecuteAsync()时出现错误未知命令取消监视

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

我可以查看我们向应用程序洞察发送了多少数据吗?

JsonPath在Newtonsoft.Json';S实现中的赋值

如何在mediatr命令中访问HttpContext而不安装弃用的nuget包

此异步方法在重写方法中缺少等待运算符警告

避免在特定区域中设置Visual Studio代码的自动格式

处理方法内部过滤与外部过滤