/ / Outlook.MailItem - Não é possível obter Para, CC e BCC do Outlook - c #, email, outlook, outlook-addin, outlook-2010

Outlook.MailItem - Não é possível obter Para, CC e BCC do Outlook - c #, email, outlook, outlook-addin, outlook-2010

Eu estou tentando criar o Outlook Addin usando C # personalizando o evento Application_ItemSend do botão Enviar.

Preciso de todos os detalhes do email antes de enviar um email.

Quando eu corro o código abaixo @ minha casa eu recebo resultados adequados, colocando alguns e-mail pessoal id seu funcionamento.

Mas quando eu corro este código semelhante na máquina do Outlook Office eu recebo os nomes.

Como por padrão o código de nomes de verificação do outlook está habilitado, isso retorna o primeiro e último nome.

Eu estou usando o Outlook 2010 @ ambos os lugares. O Outlook do Office é mapeado para o diretório ativo do Office. Minha visão de casa não está mapeada. Alguém pode fornecer uma solução comum que me dará todo o endereço de e-mail usado (para, cc, bcc e de), independentemente do diretório ativo mapeado ou não.

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);

}

Respostas:

0 para resposta № 1

Para / CC / BCC propriedades (correspondente aPR_DISPLAY_TO / CC / BCC no MAPI) são atualizados pelo provedor de armazenamento quando o item é salvo (MailItem.Save). Você também pode acessar todos os destinatários usando a coleção MailItem.Recipeints.


0 para resposta № 2

Talvez seja tarde, mas alguém pode checar esse código (funciona para mim)

    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;
}

Espero que ajude