簡體   English   中英

發送 email 附件和日歷邀請

[英]Send email with Attachments and Calendar Invite

我正在提供服務,我想發送帶有附件(圖片、pdf、文檔)的電子郵件和 ics 日歷邀請作為備用視圖。 每當我發送帶附件的郵件時,郵件中都缺少 ics 日歷邀請,但是當我的郵件中沒有任何附件時,我就可以收到日歷邀請。

這是我的代碼

if (Convert.ToString(DR["ATTACHMENT"]) != "")   //mail_att
{
    message.Attachments.Add(new Attachment(DR["ATTACHMENT"].ToString()));
}
if (Convert.ToString(DR["SCRIPT"]) != "")   //Mail_Sub
{
    System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
    ct.Parameters.Add("method", "REQUEST");
    ct.Parameters.Add("name", "meeting.ics");
    AlternateView avCal = AlternateView.CreateAlternateViewFromString(Convert.ToString(DR["SCRIPT"]), ct);
    message.AlternateViews.Add(avCal);
}

MailMessage object 消息顯示附件和 AlternateView 計數,每當我添加附件時,郵件中仍然缺少日歷邀請。

看看主題發送 email 到 Outlook with ics meeting appointment

// Now Contruct the ICS file using string builder
StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//Schedule a Meeting");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", DateTime.Now.AddMinutes(+330)));
str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", DateTime.Now.AddMinutes(+660)));
str.AppendLine("LOCATION: " + this.Location);
str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));

str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));

str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT15M");
str.AppendLine("ACTION:DISPLAY");
str.AppendLine("DESCRIPTION:Reminder");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");
str.AppendLine("END:VCALENDAR");

如果您直接使用 SMTP 發送,則附件必須嵌入到 ATTACH 字段中的 VEVENT 部分:

ATTACH;ENCODING=BASE64;VALUE=BINARY;X-FILENAME=test.txt:NBIBANyGrhFvX6xL...

在 Outlook 中創建一個帶有附件的約會並將其保存為來自 Outlook 的 ICS 文件作為測試,然后在記事本中打開該 ICS 文件然后您可以檢查腳本的外觀,在您的 AlternateView 日歷腳本中進行更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM