OutLook VSTO 获取当前活的邮件信息

Posted zdln-kc003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OutLook VSTO 获取当前活的邮件信息相关的知识,希望对你有一定的参考价值。

VSTO Outlook 网上资料不是很全,由于业务的需要,使用Outlook比较多,之前是使用VBA,但发现VBA在运行时,Outlook被占用无法工作。

进而开始学习VSTO。资料很少自己慢慢摸索,有同样的困扰者可以一起交流。

//引用
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using System.Windows.Forms;
using System.Data.SqlClient;     
//声明全局变量
Outlook.Explorer currentExplorer = null;
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            //获取选择的邮件对象
            currentExplorer = this.Application.ActiveExplorer();
            //自定义选择事件
            currentExplorer.SelectionChange += 
            new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(CurrentExplorer_Event);
         }

        //事件动作
        private void CurrentExplorer_Event()
        {
            Outlook.MAPIFolder selectedFolder =this.Application.ActiveExplorer().CurrentFolder;
            
try { if (this.Application.ActiveExplorer().Selection.Count > 0) { Object selObject = this.Application.ActiveExplorer().Selection[1]; if (selObject is Outlook.MailItem) { Outlook.MailItem mailItem = (selObject as Outlook.MailItem); /* 在这就可以获取活动邮件的各种信息了
               如主题:
mailItem.subject
               发件人地址:mailItem.SenderEmailAddress
                                  

              */ } } }
catch{ } }

没有获取收件人地址的方法,我们就写一个

VSTO 获取收件人的详细邮箱地址,这是返回使用你特殊字符分隔收件人和抄送人,可以写成返回一个数组

public static string GetSMTPAddressForRecipients(Outlook.MailItem mail)
        {
            string ReEmail = "";
            string CC = "";
            const string PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
            Outlook.Recipients recips = mail.Recipients;
            foreach (Outlook.Recipient recip in recips)
            {   
                Outlook.PropertyAccessor pa = recip.PropertyAccessor;
                if (pa.Parent.Type() == 1)
                {
                    ReEmail = ReEmail + pa.GetProperty(PR_SMTP_ADDRESS).ToString()+ "; ";
                }
                else
                {
                    CC = CC + pa.GetProperty(PR_SMTP_ADDRESS).ToString()+"; ";
                }

            }
            return ReEmail+"#"+CC;
        }

以上是关于OutLook VSTO 获取当前活的邮件信息的主要内容,如果未能解决你的问题,请参考以下文章

VSTO - Outlook 如何从邮件 ID 跟踪电子邮件

c# Outlook VSTO 插件,当邮箱处于仅标头模式时将下载新邮件

如何从 VSTO 插件中找出当前版本的 Outlook?

在 Outlook VSTO 插件中调用了 SelectionChane,但 ActiveExplorer().Selection.Count = 0:

VSTO、Outlook 加载项和 Visual Studio 2015

在 Outlook 2007 中获取当前用户的电子邮件地址