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

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

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



1、创建

public string createEmail()
        {
            StringBuilder sb = new StringBuilder();
sb.Append(@"BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171026T083000Z
DTEND:20171026T093000Z
DTSTAMP:20171026T082604Z
ORGANIZER:mailto:[email protected] 
UID:[email protected] 5656
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
CREATED:20171026T082604Z
DESCRIPTION:ssssssss
LAST-MODIFIED:20171026T082604Z
LOCATION:
PRIORITY:5
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
");
     return sb.ToString();
        }




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

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

public string updateEmailNew()
        {
            StringBuilder sb = new StringBuilder();
sb.Append(@"BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171026T083000Z
DTEND:20171027T093000Z
DTSTAMP:20171027T082604Z
ORGANIZER:mailto:[email protected] 
UID:[email protected] 5656
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
CREATED:20171026T082604Z
DESCRIPTION:ssssssss
LAST-MODIFIED:20171026T082604Z
LOCATION:
PRIORITY:5
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
");
     return sb.ToString();
        }


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

取消会议

public string CancelEmail()
        {
            StringBuilder sb = new StringBuilder();
sb.Append(@"BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:CANCEL
BEGIN:VEVENT
DTSTART:20171026T083000Z
DTEND:20171027T093000Z
DTSTAMP:20171027T082604Z
ORGANIZER:mailto:[email protected] 
UID:[email protected] 5656
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
ATTENDEE:TYPE=INDIVIDUAL Mailto:[email protected]
CREATED:20171026T082604Z
DESCRIPTION:ssssssss
LAST-MODIFIED:20171026T082604Z
LOCATION:
PRIORITY:5
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY:
TRANSP:OPAQUE
END:VEVENT
END: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);




猜你喜欢

转载自blog.csdn.net/chencai56/article/details/78365418