アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

以上 よろしくお願いします

A 回答 (2件)

うーん。



依存モジュールにも問題なし、ということですね。
自分の場合は、Win2008R2サーバでのBASP21使用で、IISの再インストールで突然動作しなくなり(それまでは動いていた)、顧客に状況を説明して、Basp21pro 64bitを購入してもらったのですが、いまでも納得でない問題です。もちろん、Basp21pro 64bitは一発で動作し、不具合は起きていません。

サーバ動作の場合はなんとなく事情はわかるのですが、クライアントサイド・VBA経由でそういう変化が出ることは非常に考えにくいです。
経緯を拝見する限り、送信時に限定された処理(送信文面のエンコード変換や添付のための内部メモリバッファ操作)のようで、障害の切り分けは難しいですね。
また、現状正常動作しているマシンが、何らかの原因で動作しなくなることもあるかと思います。

BASP21は公式に「64bit未対応」をうたっていますので、64bitならproを買え、ということなのでしょうか。
ちょっと高いけど。

答えになってなくてすいません。
    • good
    • 0
この回答へのお礼

shockatz様

PCの初期化をすれば正常に動作すると思います。

不具合が、発生した都度PCの初期化もできませんので
こまめに、システムイメージバックアップで対処しようと思います。

有益なアドバイス有難うございました。

お礼日時:2014/07/08 18:23

そもそも、Basp21は32bit時代(しかも.NET前世代)のActiveX COM DLLなので、内部で使用されている依存モジュール類が、システムにインストールされている保証は全くありません。


64bit Windowsの上できちんと動作すること自体が驚異です。

> 他の4台のPCと環境の相違は無い

とのことですが、おそらくSystemフォルダ内部のDLLに欠損があります。
(ていうか他の4台には、何らかの理由で必須DLLが追加インストールされています

dependency checkerを使って、依存モジュールと、システム内の存在是非を確認してください。

この回答への補足

shockatz様
有難うございます。

教えていただいた通り
Dependency Walker で、BSMTP.DLL が使用しているモジュールを確認しました。
不具合PC,正常なPCともに、実行結果は同じで、使用しているモジュールもすべて存在します

ファイルの破損チェックのためファイルチェッカー(SFC)を実行しましたが、エラーはありませんでした。

他に、確認事項があればよろしくお願いします。

補足日時:2014/07/04 19:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています