2

メールに返信しようとすると、とが表示さnullsender.nameますSenderName

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    currentExplorer = this.Application.ActiveExplorer();
    currentExplorer.SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(CurrentExplorer_Event);
}

private void CurrentExplorer_Event()
{
    if (this.Application.ActiveExplorer().Selection.Count == 1
     && this.Application.ActiveExplorer().Selection[1] is Outlook.MailItem)
    {
        if (mailItem != null)
        {
            ((Outlook.ItemEvents_10_Event)mailItem).Reply -= new Outlook.ItemEvents_10_ReplyEventHandler(MailItem_Reply);
        }

        mailItem = this.Application.ActiveExplorer().Selection[1];
        ((Outlook.ItemEvents_10_Event)mailItem).Reply += new
        Outlook.ItemEvents_10_ReplyEventHandler(MailItem_Reply);
    }
} 

void MailItem_Reply(Object response, ref bool cancel)
{
    Outlook.MailItem mailItem = (Outlook.MailItem)response;

    mailItem.GetInspector.Activate();
    string u = mailItem.Subject;
    string x = mailItem.Sender.Name;
    string r = mailItem.SenderName;

    mailItem.Body = "Hi " + x.Split(' ')[0]+ "\n" + mailItem .Body;
}      

私も得る

メソッド 'Microsoft.Office.Interop.Outlook._Inspector.Activate()' と非メソッド 'Microsoft.Office.Interop.Outlook.InspectorEvents_10_Event.Activate' の間のあいまいさ。メソッドグループの使用。

誰かがこれを正しく行う方法を教えてもらえますか?たとえば、送信者名で自動的に返信し、このあいまいさを取り除くことができますか?

4

1 に答える 1

1

(これが役に立ったように見えるので、私たちの議論に基づいています)

新しいメールを準備するときに MailItem が初期化されないことがよくあります...

私は通常、mail.Save(); を実行します。プロパティを初期化する

キャストの問題で…

((Microsoft.Office.Interop.Outlook._Inspector)mailItem.GetInspector).Activate()‌ ; にキャストするだけです。- 別のインターフェイスに同じ名前のイベントがあります。

于 2013-03-26T16:01:42.377 に答える