とりあえずこれでメール送信できますが、でもまだまだ改善点が残されています。
今のVBAプログラムでは、メール送信に失敗した時に、Sendフォルダに未送信のメールが残ってしまいます。
例えば、LANケーブルが接続されていない場合です。
・送信時エラー
・残ったメール
*メールファイルは、テキスト形式で保存される
送信に失敗し、メールファイルが残っても、次回送信時に一緒に送られるので、システム的には問題ありません。
しかし同じ内容のメールが、二重に送信される可能性があります。
これまではメールファイルを、手動で削除していました。
・空の状態が正しい
でも手動だと面倒だし、忘れることもあります。そこで自動化することにします。
ついでに送信に成功したメール(送信済み)も、履歴として残るようにしましょう。
実はこれらの機能を実現するのは、とても簡単で、プログラミングの変更は不要です。
Sendフォルダの中に、「sent」と「err」というサブフォルダを、新しく2つ作るだけで可能になります。
・C:\mailPG\Send
*「\」はWindowsでは円記号のことです。
プログラミングが不要なのは、 BASP21 の機能として提供されているからです。
メール送信が正常に終了すると、送信済みのメールファイルは、sentフォルダに移動します。
・sentフォルダ
逆に送信エラーのメールファイルは、errフォルダに移動します。
・errフォルダ
これで未送信のメールや、送信エラーのメールが、Sendフォルダに残らなくなりました。
【補足】
sentフォルダに移動したメールファイルは、送信履歴として使えます。
もしsentフォルダが無い場合は、送信したメールは移動されずに削除されます。送信履歴として残す必要がなければ、sentフォルダは不要です。
ログファイルにも送信結果が履歴として残るので、sentフォルダは、必ずしも必要ではありません。
また、送信できなかったメールを、あえてSendフォルダに残し、次回送信時にまとめて送りたいことがあります。
例えば、一度作成したメールが、重複して作成されないように、プログラムで管理している場合です。
そんな時は、送信できなかったメールが、errフォルダに移動すると困ることもあります。(errフォルダを作らないほうがよいケース)
メール送信システムの使い方は、人それぞれです。ケースバイケースで、どうするか決めるとよいでしょう。