送信済みと送信エラーのメールファイルを残す方法について。

やっとExcelから一括してメール送信することができるようになりました。

とりあえずこれでメール送信できますが、でもまだまだ改善点が残されています。

今のVBAプログラムでは、メール送信に失敗した時に、Sendフォルダに未送信のメールが残ってしまいます。

例えば、LANケーブルが接続されていない場合です。

・送信時エラー
mail-228.gif

・残ったメール
mail-229.gif



*メールファイルは、テキスト形式で保存される

送信に失敗し、メールファイルが残っても、次回送信時に一緒に送られるので、システム的には問題ありません。

しかし同じ内容のメールが、二重に送信される可能性があります。

これまではメールファイルを、手動で削除していました。

・空の状態が正しい
mail-231.gif

でも手動だと面倒だし、忘れることもあります。そこで自動化することにします。

ついでに送信に成功したメール(送信済み)も、履歴として残るようにしましょう。

実はこれらの機能を実現するのは、とても簡単で、プログラミングの変更は不要です。

Sendフォルダの中に、「sent」と「err」というサブフォルダを、新しく2つ作るだけで可能になります。

・C:\mailPG\Send
mail-234.gif
*「\」はWindowsでは円記号のことです。

プログラミングが不要なのは、 BASP21 の機能として提供されているからです。

メール送信が正常に終了すると、送信済みのメールファイルは、sentフォルダに移動します。

・sentフォルダ
mail-235.gif


逆に送信エラーのメールファイルは、errフォルダに移動します。

・errフォルダ
mail-236.gif


これで未送信のメールや、送信エラーのメールが、Sendフォルダに残らなくなりました。

mail-237.gif


【補足】
sentフォルダに移動したメールファイルは、送信履歴として使えます。

もしsentフォルダが無い場合は、送信したメールは移動されずに削除されます。送信履歴として残す必要がなければ、sentフォルダは不要です。

ログファイルにも送信結果が履歴として残るので、sentフォルダは、必ずしも必要ではありません。

また、送信できなかったメールを、あえてSendフォルダに残し、次回送信時にまとめて送りたいことがあります。

例えば、一度作成したメールが、重複して作成されないように、プログラムで管理している場合です。

そんな時は、送信できなかったメールが、errフォルダに移動すると困ることもあります。(errフォルダを作らないほうがよいケース)

メール送信システムの使い方は、人それぞれです。ケースバイケースで、どうするか決めるとよいでしょう。

スポンサードリンク

スポンサードリンク






メール送信・受信プログラミング初心者入門 TOPへ