我正在尝试使用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);
}
答案 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;
}
希望有所帮助