メール監視起動のフロー
POP3メールサーバーを定期的に監視し、特定のアカウントでメールを受信したときに、フローが自動で起動するように設定できます。ここではまず、「メール本文を処理するフロー」と「添付ファイルを処理するフロー」の2つのフローを用意し、次にメールの起動を設定します。
メール本文の処理フローを作成する
1.新しいフローの作成時に、「フローの作成」ダイアログで「メール処理」を選択し、「メール処理」ダイアログのメール処理の対象で「本文」を選択して作成する
HINT
メール起動の場合、「本文処理フロー」と「添付ファイル処理フロー」、必要に応じて「エラー処理フロー」の各フローを用意します。これらのフローはすべて、Startコンポーネントで開始し、Endコンポーネントで終了するように作成します。 「メール本文処理」のフローテンプレートでは、出力ストリーム型がTextのStartコンポーンネントがあらかじめ配置され、From、To、Subject、Date、MIME-Filepath、Attachment-Countの各フロー変数が設定済みの状態でフローが作成されます。
2.FilePutなどに加え終了コンポーネントを接続し、フローを完成させる
3.マッピングを設定し、各変数の値とメール本文がテキストファイルに保存されるよう設定する
「メール本文を処理するフロー」では、メールを受信したときに本文をテキストファイルへ取り出すよう設定します。
添付ファイル処理フローを作成する
1.新しいフローの作成時に、「フローの作成」ダイアログで「メール処理」を選択し、「メール処理」ダイアログのメール処理の対象で「添付ファイル」を選択して作成する
2.添付ファイルの処理に合わせて各コンポーネントを接続する
HINT
メール本文処理フローのマッピングでは、From、To、Subject、Date、MIME-Filepath、Attachment-Countの各変数の値と本文(Object)を改行で連結して出力ストリームとし、またMIME-Filepath変数からファイル名を取り出して、フォルダー名と、拡張子「.txt」を前後に付けて出力ファイルパスへマッピングしています。
3.Mapperコンポーネントの「入力をそのまま出力」プロパティを「はい」に設定する
4. マッピングウィンドウを表示し、フロー変数の 「Attachment-Filename」を「ファイルパス」 プロパティへマッピングする
「添付ファイルを処理するフロー」では、メールに添付ファイルがある場合、添付ファイルを取り出して同じ名前で保存するよう設定します。
HINT
フローの作成時に「フロー」タブの「メール添付ファイル処理」を選択すると、添付ファイルのファイル名を値に持つ「Attachment-Filename」フロー変数が自動的に設定されます。この値と、Const 関数を用いて指定したフォルダーを含めたファイルパスを出力ファイルのパスとしてマッピング指定することで、添付ファイルを名前とともに出力できます。
メール監視の実行設定を定義する
1.メール本文の処理フローを右クリックし、表示されるメニューから「実行設定」-「メール監視」を選択する
2.「実行設定」ダイアログが表示されるので、「本文処理フロー」と「添付ファイル処理フロー」をそれぞれ設定する
HINT
「実行設定」ダイアログは、フローデザイナーウィンドウ の「実行」メニューから「実行設定」-「メール監視」を選択して表示することもできます。
3.「接続名」で監視対象のPOP3コネクションを選択し、「監視間隔」を設定して、「登録」をクリックする
登録したら、「閉じる」をクリックして「実行設定」ダイアログを閉じます。以降、指定した間隔で、メールの 監視(ポーリング)が実行されるようになります。
HINT
実行設定により、フローとPOP3サーバーを監視する時間間隔を関連付けます。POP3サーバーのコネクションは、あらかじめ定義しておく必要があります。
メール監視の実行設定では、メールに添付ファイルがない場合、「本文処理フロー」のみ実行されます。メールに添付ファイルがある場合、「本文処理フロー」が終了したあとに「添付ファイル処理フロー」が起動します。複数の添付ファイルがある場合は、1つの添付ファイルごとに 「添付ファイル処理フロー」が起動します。「本文処理フロー」または「添付ファイル処理フロー」でエラーが発生した場合、設定されていれば「エラー処理フロー」が起動します。
実行設定の定義を変更するには
「フローデザイナー」ウィンドウの「実行」メニューから 「実行設定」-「一覧」を選択し、表示される「実行設定」 ダイアログの左側の一覧で対象の実行設定を選択することで、変更できます。一時的に無効にするには、ツールバーの「無効」ボタンをクリックします。