Add-in-Express を使用して Outlook プラグインを作成しました。コード:
private void CreateShowMessageUsingCreateItem(Outlook._Application OutlookApp)
{
Outlook.MailItem mail = null;
try
{
mail = OutlookApp.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
mail.Save();
mail.Display(false);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
finally
{
if (mail != null) Marshal.ReleaseComObject(mail);
}
}
Outlook が Exchange に接続されている場合に機能します。Outlook が Office365 に接続されている場合に失敗します。エラー:
Exception: System.Runtime.InteropServices.COMException (0x80004005): The operation failed.
at Microsoft.Office.Interop.Outlook.ApplicationClass.CreateItem(OlItemType ItemType)
at DocuSignInk.DSToolbox.ShowResponse(MailItem senderEmail) in C:\docusign_source\Ink_Outlook\DocuSignInk\DSToolbox.cs:line 540
一部の調査では、ループ内でこれらの呼び出しを行う場合、オブジェクトを解放する必要があることが示されています。しかし、私はループしていません。仕事の電話も一通も取れないので、手放すまでには至りません。
Wireshark と Charles でテストすると、問題はクライアントにあることがわかります。サーバーからより詳細なエラーが発生しているかどうかを確認しようとしましたが、サーバーへのトラフィックはまったくありません。
クイック Python スクリプトは、コマンド ラインから動作します。
import win32com.client
outlook = win32com.client.Dispatch('Outlook.Application')
mail = outlook.CreateItem(win32com.client.constants.olMailItem)
mail.Save()
mail.Display(False)
したがって、それはクライアントの何かでなければなりません。おそらくスレッドに関連していると思いますか?