.net c# outlook发送邀请功
用.net c#语言做一个发送会议邀请到outlook并显示在日历上
iCalendar
)支持RFC5545标准 地址是https://rsync.tools.ietf.org/html/rfc5545(全英文)
先来看一下我找的资料链接
你可以通过编写代码对outlook进行创建 修改 删除 添加
1.创建
/// <summary>/// 创建/// </summary>public string createEmail(){StringBuilder sb = new StringBuilder();//头部 VCALENDAR{sb.Append("BEGIN:VCALENDAR\nPRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN\nVERSION:2.0\nMETHOD:REQUEST\n");}//时区 {sb.Append("BEGIN:VTIMEZONE\n");sb.Append("TZID:中国标准时间\n");sb.Append("TZID:Beijing, Chongqing, Hong Kong, Urumqi\n");sb.Append("BEGIN:STANDARD\nDTSTART:16010101T000000\nTZOFFSETFROM:+0800\nTZOFFSETTO:+0800\n");sb.Append("END:STANDARD\n");sb.Append("END:VTIMEZONE\n");}//事件 VEVENT{sb.Append("BEGIN:VEVENT\nATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@1111.com:\nDTEND:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T170000")) + "\nDTSTART:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T080000")) + "\nSUMMARY:活动\nUID:ewrewewoqprue@dfjewfdsfwe#$Q@$#@fwef1231\nDESCRIPTION:今天广场活动\nLOCATION:中国\nORGANIZER;CN=111@12222.com:\nSEQUENCE:0\n");//提醒开始 VALARM{ sb.AppendLine("BEGIN:VALARM");//开始sb.AppendLine("TRIGGER;RELATED=START:-PT00H5M00S");//触发sb.AppendLine("ACTION:DISPLAY");// sb.AppendLine("DURATION:PT10M");//每隔15分触发一次// sb.AppendLine("REPEAT:4");//重复4次sb.AppendLine("DESCRIPTION:REMINDER");//描述sb.AppendLine("END:VALARM");//VALARM 结束}//事件结束sb.Append("END:VEVENT\n");}//结束{sb.Append("END:VCALENDAR");}return sb.ToString();}
*需要注意的是:ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@111.com:这句话必需放在 BEGIN:VEVENT之后否则发送之后在outlook显示会有问题
2.修改
/// <summary>/// 修改/// </summary>/// <returns></returns>public string modifyEmail(){StringBuilder sb = new StringBuilder();//头部 VCALENDAR{sb.Append("BEGIN:VCALENDAR\nPRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN\nVERSION:2.0\nMETHOD:REQUEST\n");}//时区 {sb.Append("BEGIN:VTIMEZONE\n");sb.Append("TZID:中国标准时间\n");sb.Append("TZID:Beijing, Chongqing, Hong Kong, Urumqi\n");sb.Append("BEGIN:STANDARD\nDTSTART:16010101T000000\nTZOFFSETFROM:+0800\nTZOFFSETTO:+0800\n");sb.Append("END:STANDARD\n");sb.Append("END:VTIMEZONE\n");}//事件 VEVENT{sb.Append("BEGIN:VEVENT\nATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@111.com:\nDTEND:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T200000")) + "\nDTSTART:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T080000")) + "\nSUMMARY:活动\nUID:ewrewewoqprue@dfjewfdsfwe#$Q@$#@fwef1231\nDESCRIPTION:今天广场活动\nLOCATION:中国\nORGANIZER;CN=111@222.com:\nSEQUENCE:1\n");//提醒开始 VALARM{sb.AppendLine("BEGIN:VALARM");//开始sb.AppendLine("TRIGGER;RELATED=START:-PT00H5M00S");//触发sb.AppendLine("ACTION:DISPLAY");// sb.AppendLine("DURATION:PT10M");//每隔15分触发一次// sb.AppendLine("REPEAT:4");//重复4次sb.AppendLine("DESCRIPTION:REMINDER");//描述sb.AppendLine("END:VALARM");//VALARM 结束}//事件结束sb.Append("END:VEVENT\n");}//结束{sb.Append("END:VCALENDAR");}return sb.ToString();}
*需要注意思的是:修改邀请的时候只需要保持uid一致即可(可选项SEQUENCE表示修改序列号 叠加的,实际测试可以对它不做任何修改保持原来的0表示未修改过 此时应该值为1 因为是根据上面做的第一次修改)
3.删除(也就是取消邀请)
/// <summary>/// 取消/// </summary>/// <returns></returns>public string cancelEmail(){StringBuilder sb = new StringBuilder();//头部 VCALENDAR{sb.Append("BEGIN:VCALENDAR\nPRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN\nVERSION:2.0\nMETHOD:CANCEL\n");}//时区 {sb.Append("BEGIN:VTIMEZONE\n");sb.Append("TZID:中国标准时间\n");sb.Append("TZID:Beijing, Chongqing, Hong Kong, Urumqi\n");sb.Append("BEGIN:STANDARD\nDTSTART:16010101T000000\nTZOFFSETFROM:+0800\nTZOFFSETTO:+0800\n");sb.Append("END:STANDARD\n");sb.Append("END:VTIMEZONE\n");}//事件 VEVENT{sb.Append("BEGIN:VEVENT\nATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@111.com:\nDTEND:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T200000")) + "\nDTSTART:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T080000")) + "\nSUMMARY:活动\nUID:ewrewewoqprue@dfjewfdsfwe#$Q@$#@fwef1231\nDESCRIPTION:今天广场活动\nLOCATION:中国\nORGANIZER;CN=111@222.com:\nSEQUENCE:2\n");//提醒开始 VALARM{sb.AppendLine("BEGIN:VALARM");//开始sb.AppendLine("TRIGGER;RELATED=START:-PT00H5M00S");//触发sb.AppendLine("ACTION:DISPLAY");// sb.AppendLine("DURATION:PT10M");//每隔15分触发一次// sb.AppendLine("REPEAT:4");//重复4次sb.AppendLine("DESCRIPTION:REMINDER");//描述sb.AppendLine("END:VALARM");//VALARM 结束}//事件结束sb.Append("END:VEVENT\n");}//结束{sb.Append("END:VCALENDAR");}return sb.ToString();}
*需要注意的是:取消邀请的时候只需要保持uid一致并设置METHOD:CANCEL即可(可选项SEQUENCE表示修改序列号 叠加的,实际测试可以对它不做任何修改保持原来的0表示未修改过 此时应该值为2 因为根据上面在取消时进行了修改)
4.添加
/// <summary>/// 添加/// </summary>/// <returns></returns>public string insertEmail(){StringBuilder sb = new StringBuilder();//头部 VCALENDAR{sb.Append("BEGIN:VCALENDAR\nPRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN\nVERSION:2.0\nMETHOD:REQUEST\n");}//时区 {sb.Append("BEGIN:VTIMEZONE\n");sb.Append("TZID:中国标准时间\n");sb.Append("TZID:Beijing, Chongqing, Hong Kong, Urumqi\n");sb.Append("BEGIN:STANDARD\nDTSTART:16010101T000000\nTZOFFSETFROM:+0800\nTZOFFSETTO:+0800\n");sb.Append("END:STANDARD\n");sb.Append("END:VTIMEZONE\n");}//事件2 VEVENT{sb.Append("BEGIN:VEVENT\nATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@111.com:\nDTEND:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150604T170000")) + "\nDTSTART:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150604T080000")) + "\nSUMMARY:6月4号活动\nUID:wqefasfewfoiweuj4123@#$#@$^*ewkorjweiofj\nDESCRIPTION:6月4号今天广场活动\nLOCATION:中国xxx\nORGANIZER;CN=111@222.com:\nSEQUENCE:0\n");//提醒开始 VALARM{sb.AppendLine("BEGIN:VALARM");//开始sb.AppendLine("TRIGGER;RELATED=START:-PT00H5M00S");//触发sb.AppendLine("ACTION:DISPLAY");// sb.AppendLine("DURATION:PT10M");//每隔15分触发一次// sb.AppendLine("REPEAT:4");//重复4次sb.AppendLine("DESCRIPTION:REMINDER");//描述sb.AppendLine("END:VALARM");//VALARM 结束}//事件结束sb.Append("END:VEVENT\n");}//事件1 VEVENT{sb.Append("BEGIN:VEVENT\nATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;MAILTO=111@111.com:\nDTEND:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T170000")) + "\nDTSTART:" + (string.Format("{0:yyyyMMddTHHmmssZ}", "20150603T080000")) + "\nSUMMARY:活动\nUID:<span style="font-family: 'Open Sans';">ewrewewoqprue@dfjewfdsfwe#$Q@$#@fwef1231</span>\nDESCRIPTION:今天广场活动\nLOCATION:中国\nORGANIZER;CN=111@2222.com:\nSEQUENCE:0\n");//提醒开始 VALARM{sb.AppendLine("BEGIN:VALARM");//开始sb.AppendLine("TRIGGER;RELATED=START:-PT00H5M00S");//触发sb.AppendLine("ACTION:DISPLAY");// sb.AppendLine("DURATION:PT10M");//每隔15分触发一次// sb.AppendLine("REPEAT:4");//重复4次sb.AppendLine("DESCRIPTION:REMINDER");//描述sb.AppendLine("END:VALARM");//VALARM 结束}//事件结束sb.Append("END:VEVENT\n");}//结束{sb.Append("END:VCALENDAR");}return sb.ToString();}
*需要注意的是:添加第一种:(添加VEVENT节) 添加时要将新添加的放在前面并且uid不能为同一个(个人认为放在前面是因为:如果放在后面outlook发现第一个VEVENT的uid与之前的发送邀请的uid相同那么它会认为是同一个请求,此时不会将新的EVENT添加到原来的日历上)
接下来就是执行发送邮件的程序
/// <summary>/// 发送邮件/// </summary>/// <param name="from">发送人邮件地址</param>/// <param name="fromname">发送人显示名称</param>/// <param name="to">发送给谁(邮件地址)</param>/// <param name="subject">主题</param>/// <param name="body">内容</param>/// <param name="username">邮件登录名</param>/// <param name="password">邮件密码</param>/// <param name="server">邮件服务器</param>public static voidMySendMail(string from, string fromname, string to, string subject, string body, string username, string password, string server){try{//邮件发送类 System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();//是谁发送的邮件 mail.From = new System.Net.Mail.MailAddress(from, fromname);//发送给谁 mail.To.Add(to);//标题 mail.Subject = subject;//内容编码 mail.BodyEncoding = Encoding.Default;//发送优先级 mail.Priority = System.Net.Mail.MailPriority.High;//邮件内容 mail.Body = body;//是否HTML形式发送 mail.IsBodyHtml = true;//邮件服务器和端口 System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(server, 25);smtp.UseDefaultCredentials = true;//指定发送方式 smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;//指定登录名和密码 smtp.Credentials = new System.Net.NetworkCredential(username, password);
//能不能发送看到效果全靠它了{System.Net.Mime.ContentType contype = new System.Net.Mime.ContentType("text/calendar");contype.Parameters.Add("method", "REQUEST");contype.Parameters.Add("charset", "UTF-8");System.Net.Mail.AlternateView avCal = System.Net.Mail.AlternateView.CreateAlternateViewFromString(body, contype);mail.AlternateViews.Add(avCal);}//超时时间smtp.Timeout = 10000;smtp.Send(mail);mail.Dispose();smtp.Dispose();}catch (Exception exp){throw exp;}}
*需要注意的是不能将拼接成的字符串做为附件发过去,要以正文方式发送
.net c# outlook发送邀请功相关推荐
- 怎样使用Outlook发送电子邮件,Outlook发送邮件步骤是什么?
Outlook作为最常用的邮箱客户端之一,受到了很多人的欢迎.但是,Outlook的绑定方法确实比较繁琐,经常会出现问题,不知道Outlook怎么发送邮件.其实,不是所有邮箱都支持绑定邮箱客户端,不过 ...
- Python: Git Log自动生成Release Notes,并调用Outlook发送至邮件
Python: Git Log自动生成Release Notes,并调用Outlook发送至邮件 主要功能 先上图 生成ReleaseNotes 邮件: 生成ReleaseNotes Text: 关键 ...
- outlook发送确认画面_如何强制Outlook下载图像(如果确定是个好主意)
outlook发送确认画面 If you receive an email that contains linked images, Outlook does not download those i ...
- outlook发送接收错误_如何在Outlook 2013中为RSS源创建发送/接收组
outlook发送接收错误 If you choose to manually update your RSS feeds on demand, there is a way to do this w ...
- outlook收不到html图片,急!求教高手!用outlook发送HTML格式邮件,图片不能显示是为什么...
满意答案 hpan9365 2013.10.11 采纳率:59% 等级:11 已帮助:9110人 OneNote 的电子邮件功能需要 Microsoft Office Outlook 2003 ...
- 【Vegas原创】outlook发送时,报550 5.7.1 client does not have permissions to send as this sender解决方法...
环境:exchange2007 outlook2007 AD 现象:老板要收外网邮件,但发送的时候需要用公司exchange来发.账户配置好后,一直报550 5.7.1 client does not ...
- 如何更改从Outlook发送的电子邮件中的“答复”地址
If you're sending an email on behalf of someone else, you might want people to reply to that person ...
- Outlook发送后,收到的邮件都是纯文本格式
不知道哪国语言的网址 疑似官方文档的解决方法,[排错]Outlook中,HTML邮件发送后变成了纯文本格式 https://social.technet.microsoft.com/Forums/he ...
- python用outlook自动发邮件_python调用outlook发送exchange邮件(含附件)
最近在解决一个问题,就是生成每日数据的报表,然后利用邮件群发给各位同事.由于主要工作不在这,为了节省时间,所以选择了使用python语言. 选择发送邮件时,有人可能会说直接使用smtp库不就行吗?为啥 ...
最新文章
- WIN7 64位系统下,右下角的声音和电源图标不见的解决办法
- html如何呈现在显示器,lcd显示器采用什么显示方式
- Wcf 基础教程 服务寄宿之 Windows 服务寄宿
- mysql的一些初步使用!mysqlcheck mysqladmin 建立删除修改表,库,等
- 基本套接字TCP和UDP
- xp故障恢复控制台和它的命令
- 我的《野蛮生长》书摘
- 《你好,李焕英》总票房逆袭《哪吒》 成中国影史亚军
- python自带笔记本电脑_Python执行速度:笔记本电脑与台式机
- Supervisor使用说明
- MySQL 性能优化一
- 【深入理解TcaplusDB技术】详细介绍TDR表
- 用C++(附源码)制作一款功能强大,自动偷菜QQ农场辅助!
- 手机重装为linux,安卓手机重装系统的方法
- office 2021 最新版详细安装教程,附激活方法
- Excise_day05_Array
- Office2016和Office365有什么区别
- 携程 | 组织架构如何影响项目管理
- WEB自动化_告警框处理(对话框、确认框、提示框、输入/编辑框、勾选框、单选框、复选框、下拉框)
- 中国科学院计算机研究所李华,李华-中国科学院大学-UCAS
热门文章
- Windows2016 NLB操作模式
- 如何修改eclipse编辑器背景色
- 申宝公司-A股短期难改震荡走势
- 新玺配资:震荡格局明显 低吸原则为主
- [转]100首经典好听的外文歌曲!
- ffmpeg 推流到nginx1.22.1+nginx-rtmp-module服务器
- 世界是由什么组成的java_世界的万物到底是由什么构成的?答案竟然是:什么都没有?...
- HTML5实战之《疯狂猜价格》
- 计算pi的近似值公式法_肾脏病患者小心尿毒症!医授低蛋白饮食法:重要计算公式一次曝...
- this.PreviousPage.FindControl遇到MasterPage,如何查找控件?