2017-02-27 53 views
0

我有一個軟件使用Rdo Redemption類在草稿文件夾中創建電子郵件,然後發送電子郵件。當在贖回中調用RdoMail.Send()時出現REGDB_E_CLASSNOTREG錯誤

它適用於99%的客戶端機器。但只有少數客戶在其Outlook中擁有「Google App同步」功能。他們在調用RdoMail.Send()時遇到REGDB_E_CLASSNOTREG錯誤時出現異常。

我可以看到電子郵件已在草稿文件夾中成功創建。但不能發出並得到這個類沒有註冊異常。

這裏是我的示例代碼(從http://www.dimastr.com樣本如下):

set Session = CreateObject("Redemption.RDOSession") 
Session.Logon 
set Drafts = Session.GetDefaultFolder(olFolderDrafts) 
set Msg = Drafts.Items.Add 
set Account = Session.Accounts("Google App - [email protected]&quo t;) 
Msg.Account = Account 
Msg.To = "[email protected]" 
Msg.Recipients.ResolveAll 
Msg.Subject = "test" 
Msg.Body = "Test body" 
Msg.Save 

' Have REGDB_E_CLASSNOTREG error when call Send() 
Msg.Send 

注:我試圖註冊Redemption.dll和Redemption64.dll但沒有運氣。

的功能名稱失敗是RDOMail.Send()(在http://www.dimastr.com/redemption/RDOMail.htm定義)

有誰以前遇到類似的問題?針對該問題的任何解決方案(似乎只與Google App與MAPI同步的客戶端計算機相關)?我怎樣才能找出每個COM類沒有註冊?

謝謝!

+0

我將調試版本的Redemption發送到您的私人電子郵件地址。 –

回答

0

最後,發現缺什麼,我的問題的解決方案:當安裝爲Outlook2016(Outlook 2013中)「點擊運行」模式和「谷歌應用程序同步」是設置發生

問題。當調用RDOMail.Sned()時,發生REGDB_E_CLASSNOTREG錯誤。

使用將procmon後,我們發現以下注冊表項丟失:

Windows註冊表編輯器5.00版

[HKEY_CLASSES_ROOT\CLSID\{9EADBD1A-447B-4240-A9DD-73FE7C53A981}] 
@="CLSID_IMimeMessage" 

[HKEY_CLASSES_ROOT\CLSID\{9EADBD1A-447B-4240-A9DD-73FE7C53A981}\InprocServer32] 
@="C:\\Program Files\\Microsoft Office\\Root\\Office16\\OUTLMIME.DLL" 
"ThreadingModel"="Both" 

[HKEY_CLASSES_ROOT\CLSID\{9EADBD1A-447B-4240-A9DD-73FE7C53A981}\Typelib] 
@="{9EADBD25-447B-4240-A9DD-73FE7C53A981}" 

一次,我們把這些註冊表項,RDOMail.Send()是工作用於MAPI Google App Sync電子郵件帳戶。

我做了進一步的谷歌搜索,它似乎Outlook C2R(點擊運行)可能不會正確地把所有的COM註冊表。

相關問題