c# 发邮件时发送会议邀请icalendar包括更新以及取消

来源:互联网 发布:windows控制面板命令 编辑:程序博客网 时间:2024/05/17 01:22

c#同僚们,最近我在做一个发送邮件发送i'calendar的功能,在网上找了好多资料,自己无数次修改以及测试,终于成功了

下面时我的成功实例,至于各个属性在这里就不多做介绍了



1、创建

public string createEmail()        {            StringBuilder sb = new StringBuilder();sb.Append(@"BEGIN:VCALENDARPRODID:-//Google Inc//Google Calendar 70.9054//ENVERSION:2.0CALSCALE:GREGORIANMETHOD:REQUESTBEGIN:VEVENTDTSTART:20171026T083000ZDTEND:20171026T093000ZDTSTAMP:20171026T082604ZORGANIZER:mailto:111@111.com UID:111@111.com 5656ATTENDEE:TYPE=INDIVIDUAL Mailto:222@222.comATTENDEE:TYPE=INDIVIDUAL Mailto:333@333.comCREATED:20171026T082604ZDESCRIPTION:ssssssssLAST-MODIFIED:20171026T082604ZLOCATION:PRIORITY:5SEQUENCE:0STATUS:CONFIRMEDSUMMARY:TRANSP:OPAQUEEND:VEVENTEND:VCALENDAR");     return sb.ToString();        }




这里的PRIORITY:5SEQUENCE:0其实是设置优先级以及顺序号的,本人测试过其实这两个参数在增删改时保持不变也没有出错。注意保持UID的唯一性

修改和创建其实只要UID保持一致然后修改你所需要的内容即可,比如修改开会时间

public string updateEmailNew()        {            StringBuilder sb = new StringBuilder();sb.Append(@"BEGIN:VCALENDARPRODID:-//Google Inc//Google Calendar 70.9054//ENVERSION:2.0CALSCALE:GREGORIANMETHOD:REQUESTBEGIN:VEVENTDTSTART:20171026T083000ZDTEND:20171027T093000ZDTSTAMP:20171027T082604ZORGANIZER:mailto:111@111.com UID:111@111.com 5656ATTENDEE:TYPE=INDIVIDUAL Mailto:222@222.comATTENDEE:TYPE=INDIVIDUAL Mailto:333@333.comCREATED:20171026T082604ZDESCRIPTION:ssssssssLAST-MODIFIED:20171026T082604ZLOCATION:PRIORITY:5SEQUENCE:1STATUS:CONFIRMEDSUMMARY:TRANSP:OPAQUEEND:VEVENTEND:VCALENDAR");     return sb.ToString();        }


这里我修改了会议邀请的时间,等邮件收到接受邀请后会将原来的会议时间改成这个时间

取消会议

public string CancelEmail()        {            StringBuilder sb = new StringBuilder();sb.Append(@"BEGIN:VCALENDARPRODID:-//Google Inc//Google Calendar 70.9054//ENVERSION:2.0CALSCALE:GREGORIANMETHOD:CANCELBEGIN:VEVENTDTSTART:20171026T083000ZDTEND:20171027T093000ZDTSTAMP:20171027T082604ZORGANIZER:mailto:111@111.com UID:111@111.com 5656ATTENDEE:TYPE=INDIVIDUAL Mailto:222@222.comATTENDEE:TYPE=INDIVIDUAL Mailto:333@333.comCREATED:20171026T082604ZDESCRIPTION:ssssssssLAST-MODIFIED:20171026T082604ZLOCATION:PRIORITY:5SEQUENCE:2STATUS:CONFIRMEDSUMMARY:TRANSP:OPAQUEEND:VEVENTEND:VCALENDAR");     return sb.ToString();        }



上面的代码注意空格以及各个属性间的符号,稍微多出空格或者符号就会生成不成功对此我付出了很多时间,


下面是发送邮件时的处理


string content= createEmail();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(content, contype);            msg.AlternateViews.Add(avCal);            msg.Body = body;            client.Send(msg);




原创粉丝点击