一番大きな原因は、メールアドレスが間違っていることです。
Excelから BASP21 を使ってメールを送信する場合、メールアドレスが実在する(有効)かどうかまでは、判断できません。
メールは実際に送ってみないと、正しいメルアドなのか、わからないのです。
これは普通のメーラーでも同じです。
例えば、Outlook Express のようなメーラーで、メールを送信した場合、メールアドレスが間違っていても、とりあえず送信はできます。
しかし直ぐにメールサーバーから、以下のようなメールが届きます。
これはメール送信に失敗したという通知です。(件名 failure notice)
メールの本文には、英語でメッセージが書かれています。
簡単に直訳すると、
「残念ながら、あなたのメッセージを、メールアドレスに送ることができませんでした。」
「このエラーは、解決しませんでした。」
というような内容です。
他にもメールサーバーによっては、「User unknown」というメールを返してくるものもあります。
プログラムからメールを送信した場合もまったく同じです。
メールを届けることが出来なかった場合には、送信用のメールアドレスに、上記と同じようなメッセージが届いています。
メールを送れるかどうかの判断は、最終的にはメールサーバーに任せるしかないのです。
でも、できるだけメールが届くように、私たちがプログラミングで対応できることがあります。
(1)正規表現を使って、メールアドレスが適当なデータかチェックする。
(2)「failure notice」で戻ってきたメールアドレスは、修正するか削除する。
などの対策が考えられます。
これだけの工夫でも、メールが届かない確率をグッと減らすことができます。
(1)の正規表現を使ったメールアドレスのチェックは、簡単にできます。
(2)はメールの受信プログラムまで進むと、自動化できるようになります。
でもメールが一度送信できないだけで、修正したり、削除していいのか、という問題があります。例えば、たまたま相手のメールサーバーで、不具合が発生したのかもしれません。
そこで「連続して3回届かない場合は削除する」というような工夫が必要です。
【解説】
(1)携帯電話のメールアドレスについて
特に携帯電話のメールアドレスへ、メールを一括送信する時は、注意が必要です。キャリヤー側(携帯電話サービス事業者)で、ブロックされることが多いからです。
何通以上からブロックされるのかは、明確にされていませんが、有効で無いメールアドレスが何通か続くと、ブロックされます。
そして一度ブロックされると、それ以降は、正しいメールアドレスでも届かない場合があります。
(2)届かないメールアドレスの対策
一番簡単な対策は、送信用のメルアドを Outlook Express のような普通のメーラーに設定して、受信だけ行なってみることです。
同じメールアドレスで、件名が「failure notice」や「User unknown」などの返信メールが続くようなら、手動で修正したり、Excelのワークシートから削除するとよいでしょう。
この作業は、プログラムで受信が出来れば、自動化できます。