knowledge Eメールサーバーからメールを取得しemlファイル形式で保存するサンプル

本記事では、EメールサーバーからPOP3/IMAP/EWSプロトコル経由でメールを取得し、取得したメールをemlファイル形式で保存するサンプルを紹介します。
なお、本サンプルはEメールサーバーに直接アクセスするものであり、クライアントメールソフト(Outlook, Gmail, IBM Notesほか)を操作するサンプルではありませんのでご留意ください。

サンプルは以下の流れになっています。
1. 変数宣言(ユーザー名、パスワード、Emailサーバー、Email保管先フォルダ、Email取得対象フォルダ)
2. Email保管先フォルダがなければ作成する
3. 「Email - メッセージのアーカイブ」アクションを使用してEメールを保管
(なお、本サンプルでは、取得範囲を実行日の1日前に設定しています)
4. 取得した件数をダイアログ表示

以下、サンプル

<AMREGION NAME="変数宣言" COLLAPSE="no" />
<AMVARIABLE NAME="var_User" VALUE="automate@example.com" DESCRIPTION="Eメールアカウント ユーザー名" />
<AMVARIABLE NAME="var_Pass" VALUE="Password123" DESCRIPTION="Eメールアカウント パスワード" />
<AMVARIABLE NAME="var_MailServer" VALUE="email.example.com" />
<AMVARIABLE NAME="var_SaveFolder" DESCRIPTION="Eメール保存先フォルダ">%GetDesktopDirectory()%\%Format(Date(), "yyyymmdd")%</AMVARIABLE>
<AMVARIABLE NAME="var_MailFolder" VALUE="Inbox" DESCRIPTION="Eメール取得対象フォルダ(メールサーバー上)" />
<AMENDREGION />
<!--保管先フォルダが存在しない場合作成する-->
<AMIF ACTIVITY="folder_exist" FOLDER="%var_SaveFolder%" MODE="not_exist" />
<AMFILESYSTEM ACTIVITY="create_folder" FOLDER="%var_SaveFolder%" />
<AMIF ACTIVITY="end" />
<!--実行日の1日前(0:00:00 ~ 23:59:59)のEメールをすべてeml形式で保管する-->
<!--なお、件名の同じメールが保存されない/上書きされるのを防ぐため、「一意の名前で保存」としている-->
<!--下記の例はMicrosoft Exchangeの例。POP3またはIMAPを使用している場合はそれに応じて設定を変更する-->
<!--取得するメールの件数が多いとタイムアウト(デフォルト100秒)に引っかかる可能性があるので、場合によって調整する-->
<AMEMAIL ACTIVITY="archive_messages" PROTOCOLTYPE="ews" EMAILADDRESS="%var_User%" SERVER="%var_MailServer%" USERNAME="%var_User%" PASSWORD="AM5i+OxplI4xXZHtU8ymNSr0KxJRJQhdyOEy11PC3RZJn0=aME" CURRENTFOLDER="%var_MailFolder%" RESULTDATASET="ds_Mails" DEST="%var_SaveFolder%" SAVEMODE="unique" IFNEWERTHAN="%DateSerial(Year(Now),Month(Now),Day(Now) -1)+TimeSerial(0,00,00)%" IFOLDERTHAN="%DateSerial(Year(Now),Month(Now),Day(Now) -1)+TimeSerial(23,59,59)%" />
<AMSHOWDIALOG COUNTDOWNDELAY="10">合計%ds_Mails.TotalRows%件のメッセージをフォルダ「%var_SaveFolder%」にeml形式で保管しました。</AMSHOWDIALOG>