`
dongchen916
  • 浏览: 40116 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类

【转】邮件也疯狂之Outlook约会邮件

阅读更多

源地址:http://www.cnblogs.com/amingo/archive/2008/12/02/1345515.html

邮件也疯狂之Outlook约会邮件

  工作中经常用邮件来进行沟通,对我来说,经常使用outlook来收发邮件。用outlook发邮件大家一定也不陌生,但outlook 中有一种“约会邮件”大家一定用的不多,这类邮件一般是领导安排任务或召开重大会议时的一种通知方式,因为它有提醒功能。

 

新建约会邮件

(新建约会邮件)

 

时间、地点、人物

(录入信息,注意有一个提醒设置)

 

简单介绍完了,下面就来看看如何用代码实现,废话不多说直接上代码,因为也不是我写的。(当时在项目中为了实现这个功能可花了N长时间)

 

Code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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;  //结束时间
}

 

Code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->public static void SendAppointMail(AppointMail mail)
    {
        MailMessage msg = new MailMessage();
        MailAddressCollection attendeeList = new MailAddressCollection();

        string[] sendTo = mail.to.Split(';');
        foreach (string temp in sendTo)
        {
            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");
        //calendarType.Parameters.Add("charset", "utf-8");
        //  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,
        mail.fromDisplayName,
        mail.sTime.ToLongDateString() + " " + mail.sTime.ToLongTimeString(),
        mail.eTime.ToLongDateString() + " " + mail.eTime.ToLongTimeString(),
        System.TimeZone.CurrentTimeZone.StandardName,
        mail.location,
        mail.subject);
        AlternateView textView = AlternateView.CreateAlternateViewFromString(bodyText, textType);
        msg.AlternateViews.Add(textView);*/


        //create the Body in HTML format 
        /*
        string bodyHTML = "";
        bodyHTML = string.Format(bodyHTML,
        mail.subject,
        mail.fromDisplayName,
        mail.sTime.ToLongDateString() + " " + mail.sTime.ToLongTimeString(),
        mail.eTime.ToLongDateString() + " " + mail.eTime.ToLongTimeString(),
        System.TimeZone.CurrentTimeZone.StandardName,
        mail.location,
        mail.subject);
        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 = TransferEncoding.SevenBit;
        msg.AlternateViews.Add(calendarView);

        //  Adress the message
        msg.From = new MailAddress(mail.from, mail.fromDisplayName);
        msg.IsBodyHtml = true;
        SmtpClient smtpClient = new SmtpClient(ConfigurationManager.AppSettings["mail"]);
        smtpClient.Send(msg);
    }

 

这个功能有一个小问题,就是无法在邮件正文中设置html样式,虽然设置了IsBodyHtml = true;但可惜还是不行,希望哪位高人能够解决一下~

 

额外附送我的邮件发送类 (普通的邮件)

 

 

Code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;

namespace Project.Common
{
    /// <summary>
    /// 静态类 提供发送邮件的方法
    /// </summary>
    public static class Mail
    {
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        public static void sendMail(MailEntity mail,string host)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);

            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host);
            smtpClient.Send(msg);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        /// <param name="port">端口</param>
        public static void sendMail(MailEntity mail, string host,int port)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);
            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host,port);
            smtpClient.Send(msg);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        /// <param name="port">端口</param>
        /// <param name="adminName">权限验证所需的用户名</param>
        /// <param name="adminPassword">权限验证所需的密码</param>
        public static void sendMail(MailEntity mail, string host, int port, string adminName, string adminPassword)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);
            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host, port);
            smtpClient.Credentials = new System.Net.NetworkCredential(adminName, adminPassword);
            smtpClient.Send(msg);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        /// <param name="port">端口</param>
        /// <param name="adminName">权限验证所需的用户名</param>
        /// <param name="adminPassword">权限验证所需的密码</param>
        /// <param name="domain"></param>
        public static void sendMail(MailEntity mail, string host, int port,string adminName,string adminPassword,string domain)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);
            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host, port);
            smtpClient.Credentials = new System.Net.NetworkCredential(adminName,adminPassword,domain);
            smtpClient.Send(msg);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        /// <param name="adminName">权限验证所需的用户名</param>
        /// <param name="adminPassword">权限验证所需的密码</param>
        public static void sendMail(MailEntity mail, string host, string adminName, string adminPassword)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);
            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host);
            smtpClient.Credentials = new System.Net.NetworkCredential(adminName, adminPassword);
            smtpClient.Send(msg);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mail">MailEntity实体</param>
        /// <param name="host">邮件服务器</param>
        /// <param name="adminName">权限验证所需的用户名</param>
        /// <param name="adminPassword">权限验证所需的密码</param>
        /// <param name="domain"></param>
        public static void sendMail(MailEntity mail, string host, string adminName, string adminPassword, string domain)
        {
            MailAddress fromAddress = new MailAddress(mail.From, mail.FromDisplayName);
            MailMessage msg = new MailMessage();
            msg.From = fromAddress;
            string[] sendTo = mail.To.Split(';');
            foreach (string temp in sendTo)
            {
                if (temp != string.Empty)
                {
                    msg.Bcc.Add(temp);
                }
            }
            msg.IsBodyHtml = true;
            msg.Subject = mail.Subject;
            msg.Body = mail.Body;

            SmtpClient smtpClient = new SmtpClient(host);
            smtpClient.Credentials = new System.Net.NetworkCredential(adminName, adminPassword, domain);
            smtpClient.Send(msg);
        }
    }

    /// <summary>
    /// 邮件实体
    /// </summary>
    public struct MailEntity
    {
        private string from;
        /// <summary>
        /// 发送者邮箱
        /// </summary>
        public string From
        {
            get { return from; }
            set { from = value; }
        }

        private string to;
        /// <summary>
        /// 收件者集合以;分号分隔
        /// </summary>
        public string To
        {
            get { return to; }
            set { to = value; }
        }

        private string fromDisplayName;
        /// <summary>
        /// 发送者姓名
        /// </summary>
        public string FromDisplayName
        {
            get { return fromDisplayName; }
            set { fromDisplayName = value; }
        }

        private string subject;
        /// <summary>
        /// 邮件标题
        /// </summary>
        public string Subject
        {
            get { return subject; }
            set { subject = value; }
        }

        private string body;
        /// <summary>
        /// 邮件正文
        /// </summary>
        public string Body
        {
            get { return body; }
            set { body = value; }
        }
    }
}

 


另外再PS一点VS的小功能,真的是非常小,所以不想再写一篇了。

在VS开发时,我们可以看到一个叫ASP的命名空间,看下面:

这个命名空间只有在页面的CS文件中才能看到,下面放着在该页面上注册过的usercontrol(不支持customcontrol)、页面使用的masterpage以及Global.asax文件。

看到了吗,就算给usercontrol指定了命名空间还是可以在ASP下看到。

over!

每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。我很想告诉他,可能翻过山后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。 每个人都会坚持自己的信念,在别人看来,是浪费时间,她却觉得很重要。

分享到:
评论

相关推荐

    VBA解析outlook邮件

    VBA解析Outlook邮件 通过Outlook自带的VBA宏解析Outlook邮件,提取邮件的主题、抄送、正文等信息,我们可以使用VBA宏来自动化处理邮件信息。下面是相关知识点的详细解释: 1. VBA宏: VBA(Visual Basic for ...

    Java查询OutLook邮件代码

    当我们需要从Outlook中检索邮件时,Java提供了一些库和API来实现这一功能。本篇将详细介绍如何使用Java来查询OutLook邮件。 首先,我们需要理解的是,Outlook邮件主要存储在Microsoft Exchange Server或者使用IMAP/...

    Java发送outlook邮件

    对于IBM Lotus Notes(通常用作企业级邮件系统),虽然也可以使用JavaMail API,但通常需要更复杂的配置,因为Notes使用不同的协议如IMAP或NNTP。通常,开发人员会使用IBM Domino Java API来与Notes服务器进行交互,...

    outlook反垃圾邮件

    ### Outlook反垃圾邮件功能详解及配置方法 #### 一、Outlook反垃圾邮件功能概述 在日常工作中,我们经常会遇到大量的垃圾邮件,这些邮件不仅占用邮箱空间,还可能包含恶意链接或病毒,对电脑安全构成威胁。为了...

    microsoft outlook删除相同 重复)的邮件

    Microsoft Outlook 删除相同重复的邮件 Microsoft Outlook 是一个功能强大且流行的电子邮件客户端,然而,在使用过程中,重复邮件的存在可能会导致邮件混乱和信息丢失。因此,删除重复邮件成为了一项必要的任务。...

    foxmail、OE、Outlook之间邮件互导

    foxmail、OE、Outlook 之间邮件互导 foxmail、OE、Outlook 之间邮件互导是指在不同的电子邮件客户端之间进行邮件的...同时,foxmail、OE、Outlook 之间邮件互导也可以实现邮件的共享和同步,提高工作效率和沟通效果。

    SAP ABAP启动OUTLOOK发邮件.docx

    在SAP系统中,有时需要实现自定义的邮件发送功能以满足特定的业务需求,例如在用户操作SAP采购订单报表时,直接通过Outlook发送邮件到供应商。针对这种需求,我们可以利用SAP的ABAP编程环境,通过OLE(Object ...

    outlook删除重复邮件亲测有效

    在Outlook这款强大的电子邮件管理工具中,用户可能会遇到收件箱中存在大量重复邮件的问题,这不仅占用了宝贵的存储空间,还可能导致查找重要邮件时的困扰。标题“outlook删除重复邮件亲测有效”和描述指出,这个资源...

    outlook express 邮件转outlook 2007

    outlook express 看不outlook 2007 发送邮件的附件.从outlook express中拖出收到的邮件是eml格式,用本工具可以方便的转为pst格式的文件。再用outlook 2007 导入该pst格式的文件就可以方便的看到其中的附件了。

    foxmail邮件导入Outlook 2010

    1. **选择邮件**:打开Foxmail,选择需要导出的邮件(可以是单个邮件也可以是整个文件夹)。 2. **导出操作**:点击顶部菜单栏中的“文件”-&gt;“导出”-&gt;“邮件”,然后选择一个保存路径,最后点击“保存”按钮完成...

    Outlook邮箱修改邮件发送时间工具【软件版本-3.16】.zip

    本软件是由邮箱资料站旗下outlook邮箱产品技术部独家研制开发,软件采用直观方式已发出或收到的邮件时间进行修改,直接导入登录网页,取得相关值,然后进行已发出或收到的邮件时间修改,已发出或收到的邮件时间修改...

    Outlook同时收到两份同一封邮件的解决办法.doc

    - **定期清理邮件**:对于使用POP3协议的账户,定期检查并清理服务器上的邮件,可以避免资源浪费,也有助于减少重复邮件的几率。 - **了解邮件服务器策略**:不同的邮件服务器可能有不同的处理规则,了解您所用邮件...

    调用Outlook发送邮件_outlookc_outlook_

    在IT行业中,编程语言C#为我们提供了丰富的功能,其中之一就是能够与Microsoft Office应用程序进行交互,例如Outlook。本文将深入探讨如何使用C#调用Outlook发送邮件,并提供相关的源码解析。 首先,我们需要理解C#...

    java发送OutLook会议邮件

    Java发送Outlook会议邮件是一种常见的任务,特别是在自动化工作流程或者集成系统中。下面将详细介绍如何使用Java来实现这个功能。 首先,我们需要理解Outlook会议邮件实际上是一种特殊的邮件,它包含了会议的时间、...

    Outlook崩溃后如何抢救其中的邮件数据修复工作

    在日常工作中,Microsoft Outlook作为一款常用的电子邮件客户端,承载着大量重要的邮件信息。然而,由于系统故障、软件冲突或病毒感染,Outlook可能会出现崩溃,导致无法正常运行,这将直接影响到邮件数据的访问。在...

    Outlook邮件修复工具

    Outlook邮件修复工具是专为了解决Microsoft Outlook中遇到的问题而设计的一款实用程序。这款工具主要针对DBX文件,这是Outlook Express(在较旧版本的Windows中使用)和某些其他邮件客户端用来存储邮件的数据格式。...

    OUTLOOK自动发送邮件去提示方法

    Outlook是一款广泛使用的电子邮件客户端,尤其在企业环境中颇为流行。然而,在某些自动化或者脚本化的场景下,用户可能需要让Outlook自动发送邮件,而无需人工干预。这通常涉及到编程接口(API)或者第三方工具来...

    Outlook VBA开发-按发件人自动分类邮件

    ### Outlook VBA开发-按发件人自动分类邮件 #### 概述 本教程主要介绍如何使用Outlook VBA(Visual Basic for Applications)编写脚本来实现邮件的自动分类功能。具体来说,当用户接收到新的电子邮件时,系统将根据...

    outlook2016设置删除重复邮件方法.txt

    设置outlook删除重复邮件代码本资源针对解决outlook没有删除重复邮件功能,他可以按照文件夹进行重复邮件的删除,适用任何版本的outlook,是宏操作

    解决 Office Outlook 2016 邮件不显示图片内容.docx

    ### 解决Office Outlook 2016邮件不显示图片内容 #### 问题描述与原因分析 ...总之,了解Office Outlook 2016中“显示图片框”的功能及其设置方式,有助于提高邮件处理效率,同时也避免了不必要的困惑和误解。

Global site tag (gtag.js) - Google Analytics