Sending Meeting Requests to Outlook via ASP.NET Mail Message

來源:互聯網
上載者:User

 

      現在一般的企業級應用都有需要向使用者發送約會邀請的功能需求,下面我們就來講講如何通過asp.net來發送約會邀請到outlook 中。

現在這方面的第三方庫比較多,我用的是DDay.iCal.它現在對於各個版本的outlook都支援良好,並且不依賴於office interop組件。下面

就來看一下具體的實現細節吧。

 

public void Sendmail_With_IcsAttachment()<br /> {<br /> MailMessage msg = new MailMessage();<br /> //Now we have to set the value to Mail message properties<br /> //Note Please change it to correct mail-id to use this in your application<br /> msg.From = new MailAddress(SmtpAccount, "ABC");<br /> msg.To.Add(new MailAddress(TestAccount, "BCD"));<br /> //msg.CC.Add(new MailAddress("zzzzz@xyz.com", "DEF"));// it is optional, only if required<br /> msg.Subject = "Send mail with ICS file as an Attachment";<br /> msg.Body = "Please Attend the meeting with this schedule";<br /> // Now Contruct the ICS file using string builder<br /> StringBuilder str = new StringBuilder();<br /> str.AppendLine("BEGIN:VCALENDAR");<br /> str.AppendLine("PRODID:-//Schedule a Meeting");<br /> str.AppendLine("VERSION:2.0");<br /> str.AppendLine("METHOD:REQUEST");<br /> str.AppendLine("BEGIN:VEVENT");<br /> str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", DateTime.Now.AddMinutes(+330)));<br /> str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));<br /> str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", DateTime.Now.AddMinutes(+660)));<br /> str.AppendLine("LOCATION: " + "");<br /> str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));<br /> str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));<br /> str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));<br /> str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));<br /> str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));<br /> str.AppendLine(string.Format("ATTENDEE;CN=/"{0}/";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));<br /> str.AppendLine("BEGIN:VALARM");<br /> str.AppendLine("TRIGGER:-PT15M");<br /> str.AppendLine("ACTION:DISPLAY");<br /> str.AppendLine("DESCRIPTION:Reminder");<br /> str.AppendLine("END:VALARM");<br /> str.AppendLine("END:VEVENT");<br /> str.AppendLine("END:VCALENDAR");<br /> //Now sending a mail with attachment ICS file.<br /> System.Net.Mail.SmtpClient smtpclient = new System.Net.Mail.SmtpClient();<br /> smtpclient.Host =SmtpHost; //-------this has to given the Mailserver IP<br /> smtpclient.Port = SmtpPort;<br /> smtpclient.EnableSsl = true;<br /> smtpclient.Credentials = new NetworkCredential(SmtpAccount, SmtpPassword);<br /> // smtpclient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;<br /> System.Net.Mime.ContentType contype = new System.Net.Mime.ContentType("text/calendar");<br /> contype.Parameters.Add("method", "PUBLISH");<br /> // contype.Parameters.Add("method", "REQUEST");<br /> contype.Parameters.Add("name", "Meeting.ics");<br /> AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), contype);<br /> msg.AlternateViews.Add(avCal);<br /> smtpclient.Send(msg);<br /> } 

 

只要把郵件配置搞好,就能發送約會邀請了。下面來看看效果吧

 

是不是效果還不錯,不過我還要補充一點就是使用AlternateView 可能會影響原來的設定屬性也就是說

我之前設定的msg.IsBodyHtml=true.在我使用 System.Net.Mime.ContentType contype = new System.Net.Mime.ContentType("text/calendar");後就不起作用了,這個問題我查了很多資料也浪費了大量的

時間,最後我使用了兩個AlternateView 來實現我文本的不同編碼形式。就是把msg.Body="some content";

放在一個AlternateView 中。代碼如下

 

System.Net.Mime.ContentType htmlContype = new System.Net.Mime.ContentType("text/html");<br /> AlternateView htmlView = AlternateView.CreateAlternateViewFromString(content, htmlContype);<br /> msg.AlternateViews.Add(htmlView);<br /> System.Net.Mime.ContentType contype = new System.Net.Mime.ContentType("text/calendar");<br /> contype.Parameters.Add("name", "MeetingRequest.ics");<br /> AlternateView avCal = AlternateView.CreateAlternateViewFromString(meetingRequestion, contype);<br /> msg.AlternateViews.Add(avCal); 

 

希望這段代碼能為你節省不少的時間。

 

想要深入瞭解的同學,可以訪問以下連結

http://kobikobi.wordpress.com/2009/01/03/sending-meeting-requests-to-outlook-via-aspnet-mail-message/

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.