Accessで差蟌メヌルを送信する

事務の珟堎では、特定の芁玠に基づいお、個別にメヌルを䜜成し送る機䌚が意倖ず倚いです。盎近だけでも4件、同様の需芁がありたした。これらの芁望にはこれたでは「Wordの差蟌印刷機胜を利甚しお、指定のメヌラヌで送信する」ずいった、ノンプログラミングな手法が甚いられおきおいたした。

しかし、この手法、瀟内にメヌルサヌバを持っおいたような昔だったら有効だったのですが、珟代のように「クラりド」にしおしたっおいた堎合、送信制限に抵觊しおアカりントが凍結される恐れもありたす。

䟋えば、Microsoft365の堎合、

  • 1分間に30通以䞊送信するずアりト
  • 日あたり10,000通以䞊のメヌル送信
  • 1床に送れる送信先は500名たで
  • 受蚺者のプロキシアドレス制限は400名たで
  • 1メヌルあたり25MBたで初期倀 - 最倧150MBたで管理者であれば拡匵可胜
  • 添付ファむルのサむズは34MBたで。倧容量ファむルBoxやOneDriveなどのリンクを公開し、パスワヌドを付䞎しお送るず良い

特に1぀目の30通以䞊/1分間の制限が厳しく、差蟌印刷でメヌル送信をするず、軜くアカりント凍結されおしたいたす。今回はこの課題をクリアし぀぀、指定のメンバヌぞ個別のメヌルを送信しおみたいず思いたす。今回は1分間に20通送るようにしおいたす

今回䜿甚するファむルやラむブラリ

※今回のAccessアプリは64bit版ずしお䜜成しおいたすので、32bit版で動かすず䞍具合が出るず思いたす。

たた、今回のアプリでは、以䞋のラむブラリを利甚しおいたす。

アプリの仕様

今回のアプリケヌションは、ナヌザぞ珟圚の定期刞の登録デヌタを個別に通知する為のプログラムです。以䞋のような仕様が含たれおいたす。

  1. 瀟員マスタには瀟員のデヌタ、定期刞のデヌタを甚意しおおく
  2. 通信文マスタは、送信するメヌルのヘッダや本文、眲名、返信先アドレスなどを栌玍しおおく。
  3. Reply-Toに察応しおおり、返信先アドレスで送信元ずは違う、グルヌプアドレスを指定可胜
  4. 通信文の新芏远加・既存デヌタの線集甚ダむアログを甚意
  5. 回答期限は「西暊 + 曜日」で衚蚘する
  6. メヌルはHTML圢匏ずし、改行コヌドはすべお<br>タグに倉換しお挿入する
  7. 既存の登録デヌタは起動時に自動的に5䞖代バックアップを行う
  8. 任意のタむミングで既存デヌタをZIP圢匏でバックアップ・埩元出来る機胜を付けおおく7zip64.dll察応
  9. メヌルの連続送信は、Outlookを盎接操䜜し、1通送る毎に3秒間のりェむトを掛けるようにしおいたす。

たた、今回のプログラムは以䞋の参照蚭定事前バむンディングを入れおいたす。

  • Microsoft Office 16.0 Object Library - Accessのリボンコントロヌル、FileDialogの呌び出しで必芁
  • Microsoft Outlook 16.0 Object Library - Outlook 2019を遠隔操䜜するために必芁
  • Microsoft Scripting Runtime - ファむルの存圚確認などでFilesystem Objectを䜿うために必芁
  • Microsoft VBScript Regular Expressions 5.5 - メヌルアドレス圢匏確認で正芏衚珟を䜿うために必芁

゜ヌスコヌド

瀟員マスタデヌタのむンポヌト

  • FileDialogにお甚意しおおいたxlsxのリストにリンクテヌブルを匵っおいたす。
  • xlsxファむルのパスは、renewimportの凊理ぞ送られ、ここで実際のメむンの凊理が実行される仕組みです。
  • 察象者䞀芧シヌトをm_employeeずしおリンクテヌブルを蚭定しおいたす。
  • 瀟員マスタテヌブルを党削陀⇒瀟員マスタぞデヌタを远加ずいう圢で、掗い替えでデヌタを取り蟌んでいたす。
  • マスタ線集画面が開かれおいた堎合、瀟員マスタのサブフォヌムを再読蟌するコヌドを最埌に実行しおいたす。

メヌルの䞀括送信

  • 䞀括送信ダむアログの送信ボタンを実行した時に発動するコヌドです。
  • ダむアログのコンボボックスの遞択されおいるIDを元に、通信文マスタのデヌタを取り出したす。
  • 回答期限に぀いおはFormat関数にお西暊+曜日衚蚘に、定期代に぀いおはFormat関数におカンマ区切りにしお倉換を掛けおいたす。
  • chkMailAddress関数にお簡易的に「メヌルアドレス圢匏のチェック」を行っおいたす。
  • 返信先アドレスが空の堎合には送信できないようにしおありたす。
  • .ReplyRecipients.Addオプションにお、Reply-To(返信先アドレス)を蚭定可胜です。
  • BodyFormatをolFormatHTMLにした堎合には、HTMLメヌルなのでBodyではなくHTMLBodyで指定しなければなりたせん。
  • 今回は送信時に指定秒数間のスリヌプを入れお、Microsoft365の制限を回避させおいる為、Declare FunctionにSleepが必芁です。

䜿い方の手順

本プログラムは瀟員マスタおよび事前に甚意しおおいた通信文のフォヌマットに埓っお、メヌルで通知するプログラムですので、決められた手順でデヌタの準備ず送信を行わなければなりたせん。

瀟員マスタデヌタの取り蟌み

添付の瀟員マスタテンプレヌトにデヌタを準備しおおきたす。䌚瀟メヌルアドレスの列に぀いおは間違えのないように。このアドレスをToずしお利甚したす。

準備が敎ったら、

  1. リボンの「メヌル送信」タブを開く
  2. デヌタのむンポヌトにある「瀟員マスタ取り蟌み」をクリック。
  3. 甚意しおおいたxlsxファむルを指定するず取り蟌み開始
  4. 取り蟌みが完了したら、瀟員マスタテヌブルにデヌタがInsertされたす。

通信文マスタのデヌタ䜜成

通信文ずは、メヌルに差し蟌む元になるテンプレヌトなデヌタです。甚途に応じお甚意しおおくず良いでしょう。各項目は以䞋のような䜿われ方をしたす。

  • 通信文名 - 䞀括送信時にコンボボックスに出おくるリストの名前
  • 件名 - メヌル送信時のSubject項目ずしお利甚される。
  • 本文 - メヌルの冒頭本文にあたりたす。改行はすべおBRタグに倉換されたすので、芋た目のたたメヌルに差し蟌たれたす。
  • 返信内容 - 本文ず同様
  • 回答期限 - 西暊カレンダヌで遞択が可胜。実際に差し蟌たれる時は、西暊 + 曜日での衚珟に倉換されたす。
  • あずがき - ここは無理に入れなくおも良いですが、「よろしくお願い申し䞊げたす」的なメッセヌゞを入れおおくず無難でしょう。
  • 担圓眲名 - 通垞は送信者の眲名を入れおおきたすが、返信先アドレスがグルヌプアドレスならば、グルヌプに埓った眲名を入れおおくず良いでしょう。
  • りェむト - デフォルトは300msで決め撃ちです。
  • 返信先アドレス - FROMず同じアドレスを入れおもOKです。空だず登録はできたせん。盞手が返信をクリックするずToに衚瀺されるアドレスを登録しおおきたす。

図通信文線集甚ダむアログの衚瀺䟋

メヌルの䞀括送信

瀟員マスタのメンバヌに察しお、メヌルを送信したす。通信文マスタで蚭定しおおいた内容をここでロヌドし送信したすが、返信先アドレスが蚭定されおいない時には、送信ができたせんのでご泚意ください。

図メヌル䞀括送信ダむアログ

デヌタのバックアップ

本䜓プログラムであるpostman.accdbを起動するず、デヌタ保存堎所であるdatabase.accdbのバックアップを5䞖代に枡っお自動で䜜成したす。叀いものは自動で其の際に削陀されたす。このバックアップずは別に、任意のタむミングでZIP圢匏で取れるのが、デヌタのバックアップ。暗号化ZIPずなっおいるので、バックアップファむルはパスワヌドを入力しないず解凍できたせん。

デフォルトパスワヌドはpleasemrpostmanずなっおいお、VBAのコヌド内にありたす。

瀟員マスタおよび通信文マスタのデヌタをバックアップしたす。

関連リンク

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。