当在赎回中调用RdoMail.Send()时出现REGDB_E_CLASSNOTREG错误
我有一个软件使用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类没有注册?
谢谢!
最后,发现缺什么,我的问题的解决方案:当安装为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注册表。
我将调试版本的Redemption发送到您的私人电子邮件地址。 –