2017-07-04 132 views
0

目前我正在將應用程序遷移到新版本的過程中,我面臨應用程序中的問題。基本上它是一個將向用戶發送報告的VBA Access應用程序。對於郵件遞送部分它採用Redemption.dll郵件卡在使用兌換髮送的Outlook 2013發件箱

當前版本:

  • 的Windows XP
  • MS Office 2003的
  • Redemption.dll v 4.5.0.812

遷移到

  • 視窗7

  • 的MS Office 2013

  • Redemption.dll v 4.5.0.812

方案1:在Win 7的機器使用redemption.dll V 4.5 .0.812當我運行應用程序時,報告交付功能運行時沒有錯誤。但我注意到郵件卡在發件箱中。當我打開Outlook 2013郵件得到交付。所以,當我保持展望開放,並運行郵件交付功能。

方案2:現在在Win 7的機器使用開發者版本redemption.dll v 5.14過的郵件會卡在發件箱。

可能是什麼原因,是否需要做代碼更改,或者是否與Outlook 2013相關的一些設置更改? 任何形式的幫助將非常有用....需要它:-) 如果有需要做代碼更改,是否有可能保持redemption.dll版本v 4.5(根據要求)

讓我知道你是否需要更多信息。

由於

回答

0

http://www.dimastr.com/redemption/faq.htm#1

當我使用贖回發送消息時,它簡單地停留在草稿文件夾

消息提交是在擴展MAPI一個兩步過程:

  1. 調用IMessage :: Submit()

  2. 刷新傳出的消息隊列。

如果您使用的是Exchange Server,則不需要執行步驟#2,因爲Exchange郵件存儲與Exchange傳輸提供程序緊密綁定。如果您使用POP3/SMTP傳輸和PST文件作爲消息存儲,則需要執行步驟#2。要刷新消息隊列中,Redemption.MAPIUtils對象創建一個實例,並調用後調用其DeliverNow方法(在CDO類似Session.DeliverNow)SafeMailItem.Send:

MailItem.Send 
Set Utils = CreateObject("Redemption.MAPIUtils") 
Utils.DeliverNow 

但是有一個問題沒有,如果你正在使用Outlook 2002或更新的PST文件和POP3/SMTP傳輸提供程序或安裝在Internet Only模式下的Outlook 2000:無法使用擴展MAPI刷新隊列。 Outlook的那部分簡單地被打破了。但請注意,在任何配置中使用Exchange Server或Outlook 2000 C/W的Outlook 2002/2003(聯機)都可以。

如果您在緩存模式下使用Outlook 2003或更高版本的Exchange,它將顯示相同的問題。取消選中Exchange Server屬性中的「使用緩存模式」以強制執行聯機模式 - 這將確保郵件能夠立即傳送。

作爲最後的手段,你可以模擬單擊「發送/接收」發送消息後,在Outlook按鈕:

MailItem.Send 
Set Btn = Application.ActiveExplorer.CommandBars.FindControl(1, 5488) 
Btn.Execute 

注意,在Outlook 2003中該按鈕現在是一個下拉列表中,真正的發送/接收是按鈕的子項:

Set Btn = Application.ActiveExplorer.CommandBars.FindControl(1, 7095) 
Btn.Execute 

請注意,上面的代碼假設有一個活動的資源管理器;如果以編程方式啓動Outlook(並且以前未由用戶啓動),則不會出現這種情況,也不會顯示任何文件夾。在這種情況下,你可以使用該Namespace.SyncObjects收集開始同步:

set NS = Application.GetNamespace("MAPI") 
NS.Logon 
Set Sync = NS.SyncObjects.Item(1) 
Sync.Start 

在Outlook 2010中,您還可以使用Namespace.SendAndReceive方法。

+0

感謝德米特里的回覆。在經過它之後,我在Outlook 2013中取消選中「使用緩存模式」以強制在線模式,並且郵件確實立即發送。現在我有另一個查詢,如上所述**「如果您使用Outlook 2003或更高版本的Exchange以緩存模式」**,但在我當前版本的Outlook 2003中,使用緩存模式爲「已選中」,郵件交付時不存在任何問題。因此,關閉緩存模式是解決方案,或者是否有任何更改可以做,並保持緩存模式。 – DeadShot

+0

您可以使用Namespace.SendAndReceive,但請記住它是異步的,您需要確保Outlook保持引用,直到發送/接收完成。 –

+0

再次感謝德米特里,我錯了我在錯誤的機器中檢查使用緩存模式。它不適用於Outlook 2003和更高版本。精彩的是,不需要任何代碼更改 – DeadShot

相關問題