1

Outlook MAPI フォルダにアクセスしてメールアドレスを取得します。私の方法は次のとおりです。

 public static string GetSenderEmailAddress(Microsoft.Office.Interop.Outlook.MailItem mapiObject)
    {
        Microsoft.Office.Interop.Outlook.PropertyAccessor oPA;
        string propName = "http://schemas.microsoft.com/mapi/proptag/0x0065001F";
        oPA = mapiObject.PropertyAccessor;
        string email = oPA.GetProperty(propName).ToString();
        return email;
    }

ボタン クリック イベントが呼び出されたら、そのメソッドを起動してメール アドレスを取得する必要があります。

ボタンクリックイベントはこちら。

      private void button3_Click(object sender, RibbonControlEventArgs e)
        {

 string mailadd =  ThisAddIn.GetSenderEmailAddress(Microsoft.Office.Interop.Outlook.MailItem);
        System.Windows.Forms.MessageBox.Show(mailadd);

}

ここにエラーが入ります

Microsoft.Office.Interop.Outlook.MailItem は指定されたコンテキストでは無効な「タイプ」です

これは私の最初のアドインです。この結果を達成する方法を知っている人はいますか?

4

1 に答える 1

0

を使用して、インスタンスを提供するRibbonControlEventArgsにアクセスできます。ContextMailItem

private Outlook.MailItem GetMailItem(RibbonControlEventArgs e)
{
    // Inspector Window
    if (e.Control.Context is Outlook.Inspector)
    {
        Outlook.Inspector inspector = e.Control.Context as Outlook.Inspector;
        if (inspector == null) return null;
        if (inspector.CurrentItem is Outlook.MailItem)
            return inspector.CurrentItem as Outlook.MailItem;
    }
    // Explorer Window 
    if (e.Control.Context is Outlook.Explorer)
    {
        Outlook.Explorer explorer = e.Control.Context as Outlook.Explorer;
        if (explorer == null) return null; 
        Outlook.Selection selectedItems = explorer.Selection;
        if (selectedItems.Count != 1)  return null;  
        if (selectedItems[1] is Outlook.MailItem)
            return selectedItems[1] as Outlook.MailItem;
    }     
    return null;
}

このメソッドを追加して、次のように利用できます...

string mailAddress = string.Empty;
Outlook.MailItem mailItem = GetMailItem(e);
if (mailItem != null)
    mailAddress =  ThisAddIn.GetSenderEmailAddress(mailItem);
于 2013-02-07T02:11:21.110 に答える