.net 发送Calendar

  /// <summary>  
        /// 发送邮件  
        /// </summary>  
        /// <param name="from">发送人邮件地址</param>  
        /// <param name="fromname">发送人显示名称</param>  
        /// <param name="attendees">发送给谁(邮件地址)</param>  
        /// <param name="subject">主题</param>  
        /// <param name="body">内容</param>  
        /// <param name="meetingInfo">meetingInfo</param>
        /// <param name="username">邮件登录名</param>  
        /// <param name="password">邮件密码</param>  
        /// <param name="server">邮件服务器</param>  
        public static int SendMail(string from, string fromname, List<string> attendees, string subject, string meetingInfo, 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,System.Text.Encoding.UTF8);
                
                //发送给谁   
                foreach (string attendee in attendees)
                {
                    mail.To.Add(attendee);
                }
                //是否HTML形式发送   
                mail.IsBodyHtml = true;
                //标题   
                mail.Subject = subject;
                //内容编码   
                mail.BodyEncoding = Encoding.UTF8;
                //发送优先级   
                mail.Priority = System.Net.Mail.MailPriority.High;
                //邮件内容                   
                AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(body, null, "text/html");
                //插入图片到正文
                string filePath = AppDomain.CurrentDomain.BaseDirectory;
                ContentType Jpeg = new ContentType();
                Jpeg.MediaType = MediaTypeNames.Image.Jpeg;
                LinkedResource lrImage = new LinkedResource(filePath + "Images/11floor.jpg", Jpeg);
                lrImage.ContentId = "Email001";
                LinkedResource lrImage_2 = new LinkedResource(filePath + "Images/17floor.jpg", Jpeg);
                lrImage_2.ContentId = "Email002";
                LinkedResource lrImage_3 = new LinkedResource(filePath + "Images/email.png", Jpeg);
                lrImage_3.ContentId = "Email003";
                htmlBody.LinkedResources.Add(lrImage);
                htmlBody.LinkedResources.Add(lrImage_2);
                htmlBody.LinkedResources.Add(lrImage_3);
                
                mail.AlternateViews.Add(htmlBody);
                //邮件服务器和端口   
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(server);
                //指定发送方式   
                smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
               
                //指定登录名和密码   
                smtp.Credentials = new System.Net.NetworkCredential(username, password);
                smtp.UseDefaultCredentials = true;
                smtp.EnableSsl = false;
                //添加Calendar文件
                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(meetingInfo, contype);
                mail.AlternateViews.Add(avCal);
                
                //超时时间  
                smtp.Timeout = 100000;
                smtp.Send(mail);
                mail.Dispose();
                smtp.Dispose();
            }
            catch (Exception exp)
            {
                Console.Write(exp);
                return 0;
                //throw exp;           
            }
            return 1;
        }    
   /// <summary>
        /// 
        /// </summary>
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <param name="attendees">参与人</param>
        /// <param name="organizer">组织者</param>
        /// <param name="subject">主题</param>
        /// <param name="description">介绍</param>
        /// <param name="guid">stmp</param>
        /// <param name="location">地点</param>
        /// <returns></returns>
        public string BuildIcsFormatString(DateTime startTime, DateTime endTime, ICollection<string> attendees, string organizer,
               string subject, string description, string guid, string location)
        {
            System.Text.StringBuilder sw = new System.Text.StringBuilder();
            
            sw.AppendLine("BEGIN:VCALENDAR");
            sw.AppendLine("VERSION:2.0");
            sw.AppendLine("METHOD:REQUEST");
            sw.AppendLine("X-MS-OLK-FORCEINSPECTOROPEN:TRUE");
            sw.AppendLine("BEGIN:VTIMEZONE");//声明时区
            sw.AppendLine("TZID:"+ TimeZoneInfo.Local);//所在时区
            sw.AppendLine("BEGIN:STANDARD");
            sw.AppendLine("DTSTART:16010101T000000");
            sw.AppendLine("TZOFFSETFROM:+0800");
            sw.AppendLine("TZOFFSETTO:+0800");
            sw.AppendLine("END:STANDARD");
            sw.AppendLine("END:VTIMEZONE");
            sw.AppendLine("BEGIN:VEVENT");//开始事件
            if (attendees != null)
            {
                foreach (string attendee in attendees)
                {
                    sw.AppendLine("ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:" + attendee);//写入参加者
                }
            }
            sw.AppendLine("CLASS:PUBLIC");
            sw.AppendLine(string.Format("CREATED:{0:yyyyMMddTHHmmssZ}", DateTime.Now));//获取创建时间
            sw.AppendLine("DESCRIPTION:" + description);//获取描述
            sw.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmss}", endTime));//写入课程结束时间
            sw.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmss}", startTime));//写入课程开始时间
            sw.AppendLine("ORGANIZER;CN=\"NLU, Service (Northern Lights)\":mailto:" + organizer);//写入组织者
            sw.AppendLine("SEQUENCE:0");
            sw.AppendLine("UID:" + guid);
            sw.AppendLine("LOCATION:" + location);//写入会议地点
            sw.AppendLine("SUMMARY;LANGUAGE=en-us:" + subject);//写入主题
            sw.AppendLine("BEGIN:VALARM");//会议提醒
            sw.AppendLine("ACTION:DISPLAY");
            sw.AppendLine("DESCRIPTION:Reminder");
            sw.AppendLine("END:VALARM");
            sw.AppendLine("END:VEVENT");
            sw.AppendLine("END:VCALENDAR");
            return sw.ToString();
            //ICS拼写完成并返回
        }
    

 

posted @ 2017-03-09 09:55  SkyLeo  阅读(360)  评论(0编辑  收藏  举报