Outlook.MailItem - 无法访问,CC&来自Outlook的BCC

时间:2014-10-31 12:04:43

标签: c# email outlook outlook-addin outlook-2010

我正在尝试使用C#通过自定义发送按钮的Application_ItemSend事件来创建Outlook Addin。

在发送电子邮件之前,我需要所有电子邮件详细信息。

当我运行以下代码@ my home时,通过将一些个人电子邮件ID用于其中来获得正确的结果。

但是当我在办公室外观机器上运行这个类似的代码时,我得到了名字。

默认情况下,启用了Outlook的检查名称代码,这将返回名字和姓氏。

我正在使用Outlook 2010 @这两个地方。 Office Outlook映射到office活动目录。我的家庭展望没有映射。任何人都可以提供一个通用的解决方案,它将为我提供所有使用的电子邮件地址(to,cc,bcc& from),无论是否映射了活动目录。

private void ThisAddIn_Startup(object sender, System.EventArgs e)        { 
          Application.ItemSend += new           Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);  
}

void Application_ItemSend(object Item, ref bool Cancel)        {
Outlook.MailItem mail = Item as Outlook.MailItem;            
Outlook.Inspector inspector = Item as Outlook.Inspector;

System.Windows.Forms.MessageBox.Show(mail.CC);
System.Windows.Forms.MessageBox.Show(mail.BCC);

} 

2 个答案:

答案 0 :(得分:0)

保存项目时,商店提供商会更新/ CC / BCC属性(对应于MAPI中的PR_DISPLAY_TO / CC / BCC)(MailItem.Save)。您还可以使用MailItem.Recipeints集合访问所有收件人。

答案 1 :(得分:0)

也许已经很晚了,但是有人可以查看这段代码(它对我有用)

    private string[] GetCCBCCFromEmail(Outlook.MailItem email)
    {
        string[] ccBCC = new string[] { "", "" };//cc y bcc
        Outlook.Recipients recipients = email.Recipients;

        foreach (Outlook.Recipient item in recipients)
        {
            switch (item.Type)
            {

                case (int)Outlook.OlMailRecipientType.olCC:                        
                    ccBCC[0] += GetEmail(item.AddressEntry) + ";";
                    break;
                case (int)Outlook.OlMailRecipientType.olBCC:
                    ccBCC[1] += GetEmail(item.AddressEntry) + ";";
                    break;
            }
        }
        return ccBCC;
    }
    private string GetEmail(Outlook.AddressEntry address) 
    {
        string addressStr = "";

        if (address.AddressEntryUserType ==
                Outlook.OlAddressEntryUserType.
                olExchangeUserAddressEntry
                || address.AddressEntryUserType ==
                Outlook.OlAddressEntryUserType.
                olExchangeRemoteUserAddressEntry)
        {
            //Use the ExchangeUser object PrimarySMTPAddress
            Outlook.ExchangeUser exchUser =
                address.GetExchangeUser();
            if (exchUser != null)
            {
                addressStr = exchUser.PrimarySmtpAddress;
            }
        }
        //Get the address from externals
        if (address.AddressEntryUserType == Outlook.OlAddressEntryUserType.
            olSmtpAddressEntry)
        {
            addressStr = address.Address;
        }

        return addressStr;
    }

希望有所帮助