以下來說明如何發一封有"會議邀請"格式的 Mail。
// 記得載入 Mail 的元件 using System.Net.Mail; ... // 建立 SMTP Object SmtpClient sc = new SmtpClient(); // 指定 SMTP Server IP sc.Host = "192.168.192.1"; // 建立 Mail Object, 並指定好 From、To、Subject、Body MailMessage msg = new MailMessage(); msg.From = new MailAddress("admin@tim.com.tw", "EIP System"); msg.To.Add(new MailAddress("tim@tim.com.tw", "Tim Lin")); msg.Subject = "[EIP System] 出差/請假申請成功"; msg.Body = "此封信件是自動發出的,用於 Book Outlook 行事曆。"; // !!!==========重點==========!!! // 定義 Mail 是會議邀請的格式。 StringBuilder str = new StringBuilder(); str.AppendLine("BEGIN:VCALENDAR"); str.AppendLine("PRODID:-//Tim Blog"); str.AppendLine("VERSION:2.0"); str.AppendLine("METHOD:REQUEST"); str.AppendLine("BEGIN:VEVENT"); // Book 的 起始時間。 str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", Convert.ToDateTime(strSDate))); // 定義時區 str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.Now)); // Book 的 結束時間。 str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", Convert.ToDateTime(strEDate))); str.AppendLine("LOCATION: " + msg.Subject); 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("END:VEVENT"); str.AppendLine("END:VCALENDAR"); System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar"); ct.Parameters.Add("method", "REQUEST"); AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct); msg.AlternateViews.Add(avCal); // !!!==========重點==========!!! // 發送 Mail sc.Send(msg);
參考來源:StackOverflow
沒有留言:
張貼留言