.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拼写完成并返回 }