• VS.NET发送会议邮件程序原码


    //**************  发送会议通知  *****************************************************//

        public struct AppointMail
        {
            public string from;     //发件人邮箱   
            public string to;        //收件人邮箱;号分隔的一个串   
            public string fromDisplayName; //发件人姓名   
            public string subject;  //标题   
            public string body;     //正文   
            public string location; //地点   
            public DateTime sTime;  //开始时间   
            public DateTime eTime;  //结束时间
        }

        public static void SendAppointMail(AppointMail mail)
        {
            MailMessage msg = new MailMessage();
            MailAddressCollection attendeeList = new MailAddressCollection();
            string[] sendTo = mail.to.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp.Trim().Length > 3)
                {
                    msg.Bcc.Add(temp);
                    attendeeList.Add(temp);
                }
            }
            //  Set up the different mime types contained in the message       
            System.Net.Mime.ContentType textType = new System.Net.Mime.ContentType("text/plain");
            System.Net.Mime.ContentType HTMLType = new System.Net.Mime.ContentType("text/html");
            System.Net.Mime.ContentType RTFType = new System.Net.Mime.ContentType("text/rtf");
            System.Net.Mime.ContentType calendarType = new System.Net.Mime.ContentType("text/calendar;");
            //Add parameters to the calendar header       
            calendarType.Parameters.Add("method", "REQUEST");
            calendarType.Parameters.Add("name", "meeting.ics");

       // Create message body parts   

            // create the Body in text format   

               

            string bodyText = "Type:Single Meeting"r"nOrganizer: {0}"r"nStart Time:{1}"r"nEnd Time:{2}"r"nTime Zone:{3}"r"nLocation: {4}"r"n"r"n*~*~*~*~*~*~*~*~*~*"r"n"r"n{5}";   

            bodyText = string.Format(bodyText, organizerName, start.ToLongDateString() + " " + start.ToLongTimeString(), end.ToLongDateString() + " " + end.ToLongTimeString(), System.TimeZone.CurrentTimeZone.StandardName, location, summary);   

            AlternateView textView = AlternateView.CreateAlternateViewFromString(bodyText, textType);   

            msg.AlternateViews.Add(textView);   

               

            //create the Body in HTML format   

            string bodyHTML = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 3.2//EN"">"r"n<HTML>"r"n<HEAD>"r"n<META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html; charset=utf-8"">"r"n<META NAME=""Generator"" CONTENT=""MS Exchange Server version 6.5.7652.24"">"r"n<TITLE>{0}</TITLE>"r"n</HEAD>"r"n<BODY>"r"n<!-- Converted from text/plain format -->"r"n<P><FONT SIZE=2>Type:Single Meeting<BR>"r"nOrganizer:{1}<BR>"r"nStart Time:{2}<BR>"r"nEnd Time:{3}<BR>"r"nTime Zone:{4}<BR>"r"nLocation:{5}<BR>"r"n<BR>"r"n*~*~*~*~*~*~*~*~*~*<BR>"r"n<BR>"r"n{6}<BR>"r"n</FONT>"r"n</P>"r"n"r"n</BODY>"r"n</HTML>";   

             bodyHTML = string.Format(bodyHTML,summary,organizerName,start.ToLongDateString() + " " + start.ToLongTimeString(),end.ToLongDateString() + " " + end.ToLongTimeString(),System.TimeZone.CurrentTimeZone.StandardName,location,summary);   

             AlternateView HTMLView = AlternateView.CreateAlternateViewFromString(bodyHTML, HTMLType);   

             msg.AlternateViews.Add(HTMLView);


            //create the Body in VCALENDAR format       
            string calDateFormat = "yyyyMMddTHHmmssZ";
            string bodyCalendar = "BEGIN:VCALENDAR\r\nMETHOD:REQUEST\r\nPRODID:Microsoft CDO for Microsoft Exchange\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:(GMT-06.00) Central Time (US & Canada)\r\nX-MICROSOFT-CDO-TZID:11\r\nBEGIN:STANDARD\r\nDTSTART:16010101T020000\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nRRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nDTSTART:16010101T020000\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nRRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nDTSTAMP:{8}\r\nDTSTART:{0}\r\nSUMMARY:{6}\r\nUID:{5}\r\nATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"{9}\":MAILTO:{9}\r\nACTION;RSVP=TRUE;CN=\"{4}\":MAILTO:{4}\r\nORGANIZER;CN=\"{3}\":mailto:{4}\r\nLOCATION:{2}\r\nDTEND:{1}\r\nDESCRIPTION:{7}\\N\r\nSEQUENCE:1\r\nPRIORITY:5\r\nCLASS:\r\nCREATED:{8}\r\nLAST-MODIFIED:{8}\r\nSTATUS:CONFIRMED\r\nTRANSP:OPAQUE\r\nX-MICROSOFT-CDO-BUSYSTATUS:BUSY\r\nX-MICROSOFT-CDO-INSTTYPE:0\r\nX-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\r\nX-MICROSOFT-CDO-ALLDAYEVENT:FALSE\r\nX-MICROSOFT-CDO-IMPORTANCE:1\r\nX-MICROSOFT-CDO-OWNERAPPTID:-1\r\nX-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:{8}\r\nX-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:{8}\r\nBEGIN:VALARM\r\nACTION:DISPLAY\r\nDESCRIPTION:REMINDER\r\nTRIGGER;RELATED=START:-PT00H15M00S\r\nEND:VALARM\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
            bodyCalendar = string.Format(bodyCalendar,
                mail.sTime.ToUniversalTime().ToString(calDateFormat),
                mail.eTime.ToUniversalTime().ToString(calDateFormat),
                mail.location,
                mail.fromDisplayName,
                mail.from,
                Guid.NewGuid().ToString("B"),
                mail.subject, //summary       
                mail.body,//正文       
                DateTime.Now.ToUniversalTime().ToString(calDateFormat),
                attendeeList.ToString(),
                mail.body
                );
            AlternateView calendarView = AlternateView.CreateAlternateViewFromString(bodyCalendar, calendarType);
            calendarView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
            msg.AlternateViews.Add(calendarView);
            //  Adress the message       
            msg.From = new MailAddress(mail.from, mail.fromDisplayName);
            msg.IsBodyHtml = true;
            SmtpClient smtpclnt = new SmtpClient();
            smtpclnt.Host = ConfigurationManager.AppSettings["MySmtp"].ToString();
            smtpclnt.Send(msg);
        }

  • 相关阅读:
    程序设计实践读书笔记(一)
    Markdown语法和MWeb使用说明
    Comparable和Comparator的学习笔记
    WMware给centos6.8虚拟机添加硬盘
    Centos定时自动执行脚本
    linux开机关机自启动或自关闭服务的方式
    jira从windows迁移到linux
    ERROR: transport error 202:bind failed:Address already in use
    linux文件备份到windows方法
    validator验证
  • 原文地址:https://www.cnblogs.com/vic_lu/p/1810016.html
Copyright © 2020-2023  润新知