• 締切済み

Basp21を使用してメール送信ができない

Basp21を使用して、メール送信プログラム(Excel VBA)を作成しました。 5台のパソコン(同一仕様)の内1台のパソコンのみエラーが発生してメール送信ができません。 他の4台のPCと環境の相違は無いと思いますが、原因が解りません。 パソコンの初期化をすれば、正常に動作すると思いますが、 エラー発生の都度、初期化もできません。 どなたか、ご教示をよろしくお願いします。 PC環境  OS  :Win7 Pro 64Bit環境  Excel:2013 32Bit  セキュリティソフト:無効 コンポーネントの組み込み  Bsmtp.dll(587 Version) を C:\Windows\SysWOW64 のフォルダーにコピー エラーメッセージ(1秒程度でリターン)  HELO BSMTP.DLL helo BSMTP.DLL 確認項目  1)通常のメール送受信は問題無し(Outlook)  2)Bsmtpのセキュリティは、正常な他のPCと同じ  3)Administratorsで実行してもエラー発生(ユーザー権限の問題)  4)エラー発生時に、Bsmtp.dllの削除操作    Excelによって開かれているため削除不可のメッセージ(dllの読込み確認)  5)架空のサーバーを指定:Cant connect Server 11001のメッセージ  6)LANケーブルを抜く  :Cant connect Server 11004  7)Excelの再インストール(レジストリも削除)しても同じ(Excelのチェック)  8)Bsmtp.dllをコピーしなおしても同じ(Bsmtpのチェック) プログラム  Private Declare Function SendMail Lib "BSMTP.dll" _ (szServer As String, szTo As String, szFrom As String, _ szSubject As String, szBody As String, szFile As String) As String strSMTP="aaa.co.jp" strPort="25" strTimeOut="60" strToAddr="a123@aaa.co.jp" strFromAddr="b123@aaa.co.jp" strSubj="メールテスト"   strBody="本文" strAttach="" strSV_Name = strSMTP & ":" & strPort & ":" & strTimeOut strMailto = strToAddr strMailFrom = strFromAddr strRC = SendMail(strSV_Name, strMailto, strMailFrom, strSubj, _ strBody, strAttach) If strRC <> "" Then MsgBox "エラー発生" & strRC End If 以上 よろしくお願いします

みんなの回答

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

うーん。 依存モジュールにも問題なし、ということですね。 自分の場合は、Win2008R2サーバでのBASP21使用で、IISの再インストールで突然動作しなくなり(それまでは動いていた)、顧客に状況を説明して、Basp21pro 64bitを購入してもらったのですが、いまでも納得でない問題です。もちろん、Basp21pro 64bitは一発で動作し、不具合は起きていません。 サーバ動作の場合はなんとなく事情はわかるのですが、クライアントサイド・VBA経由でそういう変化が出ることは非常に考えにくいです。 経緯を拝見する限り、送信時に限定された処理(送信文面のエンコード変換や添付のための内部メモリバッファ操作)のようで、障害の切り分けは難しいですね。 また、現状正常動作しているマシンが、何らかの原因で動作しなくなることもあるかと思います。 BASP21は公式に「64bit未対応」をうたっていますので、64bitならproを買え、ということなのでしょうか。 ちょっと高いけど。 答えになってなくてすいません。

N1963
質問者

お礼

shockatz様 PCの初期化をすれば正常に動作すると思います。 不具合が、発生した都度PCの初期化もできませんので こまめに、システムイメージバックアップで対処しようと思います。 有益なアドバイス有難うございました。

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

そもそも、Basp21は32bit時代(しかも.NET前世代)のActiveX COM DLLなので、内部で使用されている依存モジュール類が、システムにインストールされている保証は全くありません。 64bit Windowsの上できちんと動作すること自体が驚異です。 > 他の4台のPCと環境の相違は無い とのことですが、おそらくSystemフォルダ内部のDLLに欠損があります。 (ていうか他の4台には、何らかの理由で必須DLLが追加インストールされています dependency checkerを使って、依存モジュールと、システム内の存在是非を確認してください。

N1963
質問者

補足

shockatz様 有難うございます。 教えていただいた通り Dependency Walker で、BSMTP.DLL が使用しているモジュールを確認しました。 不具合PC,正常なPCともに、実行結果は同じで、使用しているモジュールもすべて存在します ファイルの破損チェックのためファイルチェッカー(SFC)を実行しましたが、エラーはありませんでした。 他に、確認事項があればよろしくお願いします。

関連するQ&A