0
我有一個.NET應用程序,它允許用戶單擊一個按鈕,該按鈕將在Outlook中啓動一個新的預填充消息。這在很大程度上很有用,只有一個小例外。如果用戶在發送郵件時沒有打開Outlook,則郵件將進入其發件箱,直到他們實際啓動主Outlook應用程序。只有這樣,發送/接收似乎纔會真正發生。即使在Outlook關閉時發送Outlook MailItem
這裏的代碼片斷我用來創建MailItem
:
Dim mailItem As Outlook.MailItem = Me.OutlookApplication.CreateItem(Outlook.OlItemType.olMailItem)
mailItem.To = "[email protected]"
mailItem.Subject = "Some Subject"
mailItem.HTMLBody = "Some Text"
mailItem.Display(False)
我鉤到ItemSend
事件爲Outlook.Application
一樣,所以我能看到,當用戶從點擊Send
Outlook的MailItem
成功引發了此事件。
如果Outlook在用戶啓動消息時未運行,則會生成新的OUTLOOK.EXE進程。無論哪種情況,系統托盤中都會顯示一個圖標,表示Outlook已連接到外部應用程序。
是否有可能以某種方式觸發使用Interop發送/接收,所以我可以確保郵件將被髮送而無需用戶分開打開Outlook?
我試過了。即使我從來沒有實際地將引用放置到我的Outlook.Application中,OUTLOOK.EXE過程在我的ItemSend事件處理程序完成時立即結束。發送/接收完成後有什麼方法可以偵聽嗎?我想我可以在事件處理程序線程上等待30秒左右,但這看起來很混亂,並不是100%穩健。 – mclark1129 2013-02-22 18:25:11
您可以使用Namespace.SyncObject集合來啓動同步。 SyncObject公開SyncStart/SyncEnd事件。 – 2013-02-25 18:24:09