2017-02-27 13 views
0

Rdo Redemptionクラスを使用してドラフトフォルダに電子メールを作成し、電子メールを送信するソフトウェアがあります。RedemptionでRdoMail.Send()を呼び出すときにREGDB_E_CLASSNOTREGエラーが発生しました

クライアントマシンの99%で正常に動作します。しかし、Outlookに「Google App Sync」を持つクライアントはごくわずかです。 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のデバッグ版をあなたのプライベートEメールアドレスに送った。 –

答えて

0

は最後に、行方不明と私の問題の解決されているものを発見:「実行するには、ここをクリック」モードと「グーグルのApp Sync」が設定されるようOutlook2016(展望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メールアカウントの場合

私はさらにGoogle検索を行い、Outlook C2R(Click to run)がすべてのCOMレジストリを正しく配置していない可能性があります。