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 № 1Para / 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