繁体   English   中英

如何从 MS Outlook 2010 中检索 CC 电子邮件地址?

[英]How to retrieve CC email address from MS outlook 2010?

我正在使用以下代码从 MS Outlook 2010 中检索不同的邮件参数。但我无法获得 CC 电子邮件地址。 MailItem类的CC属性返回 Name,而不是电子邮件地址。

            NameSpace _nameSpace;
            ApplicationClass _app;
            _app = new ApplicationClass();
            _nameSpace = _app.GetNamespace("MAPI");
            object o = _nameSpace.GetItemFromID(EntryIDCollection);
            MailItem Item = (MailItem)o;
            string HTMLbpdyTest = Item.HTMLBody;
            CreationTime = Convert.ToString(Item.CreationTime);
            strEmailSenderEmailIdMAPI = Convert.ToString(Item.SenderEmailAddress);
            strEmailSenderName = Item.SenderName;
            Subject = Item.Subject;
            string CCEmailAddress = Item.CC;

请建议,我怎样才能获得 CC 电子邮件地址?

循环遍历MailItem.Recipients集合,并为每个Recipient对象检查其Type属性; olCC就是你想要的。 然后您可以读取Recipient.Address属性。

编辑:关闭我的头顶。

foreach (Recipient recip in Item.Recipients)
{
  if (recip.Type == OlMailRecipientType.olCC)
  {
    if (CCEmailAddress.length > 0) CCEmailAddress += ";";
    CCEmailAddress += recip.Address;
  }
}

我受到@Dmitry 的回答的启发,自己尝试了一些事情,让这些代码行解决我的问题,并为我提供给定邮件项目中存在的抄送地址数组。

public string[] GetCCAddress(MailItem mailItem)
    {
        string email;
        Outlook.ExchangeUser exUser;
        List <string> ccEmailAddressList = new List<string>();
        foreach (Recipient recip in mailItem.Recipients)
        {
            if ((OlMailRecipientType)recip.Type == OlMailRecipientType.olCC)
            {
                    email=recip.Address;
                    if (!email.Contains("@"))
                    {
                        exUser = recip.AddressEntry.GetExchangeUser();
                        email = exUser.PrimarySmtpAddress;
                    }
                    ccEmailAddressList.Add(email);

            }
        }

此语句if (!email.Contains("@"))是为了避免在实际电子邮件地址上调用exUser.PrimarySmtpAddress并将其限制为诸如“ /O=EXG5/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=”之类的条目收件人/CN=Test88067"

public static int ConnectToOutlook()
{
    try
    {
        Outlook.Application oApp = new Outlook.Application();
        Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
        oNS.Logon(Missing.Value, Missing.Value, false, true);                        
        Outlook.MAPIFolder oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Parent;                              
        List<string> ccRecipient = new List<string>();
        foreach (MAPIFolder folder in oInbox.Folders)
        {
            if (folder.FullFolderPath.Contains("Inbox"))
            {
                foreach (MAPIFolder subFolder in folder.Folders)
                {
                    try
                    {
                        if (subFolder.FullFolderPath.Contains("Folder Name Inside Inbox"))
                        {
                            foreach (object folderItems in subFolder.Items)
                            {
                                if (folderItems is Outlook.MailItem)
                                {
                                    Outlook.MailItem email_Msg = (Outlook.MailItem)folderItems;
                                    Console.WriteLine("Subject=>" + email_Msg.Subject);
                                    //Console.WriteLine("From=>" + email_Msg.SenderEmailAddress);
                                    //Console.WriteLine("Cc=>" + email_Msg.CC);
                                    //Console.WriteLine("Recipients=>" + email_Msg.Recipients[1].Address);
                                    foreach (Recipient recipient in email_Msg.Recipients)
                                    {
                                        if ((OlMailRecipientType)recipient.Type == OlMailRecipientType.olCC)
                                        {
                                            Console.WriteLine("Cc=>" + recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress);                                                                                                      
                                        }

                                    }                                           
                                }
                            }
                        }
                    }
                    catch (System.Exception error)
                    {
                        Console.WriteLine();
                        Console.WriteLine(error.Message);
                    }
                }
            }
        }               
    }
    catch (System.Exception e)
    {
        Console.WriteLine("{0} Exception caught: ", e);
    }
    return 0;
}

尝试

Item.CC.Address

要么

((MailAddress)Item.CC).Address

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM