受信したメールの添付ファイルを取得する方法を紹介します。
今回はOutlookを使っている場合で紹介します。
Outlookだとアクティビティがあって便利なので特に制限が無ければ、Outlookを使うことをおすすめします。
処理としてはまずメールを取得します。
Activities>Available>App Integration>Mail>Outlook>Get Outlook Mail Messagesを選択します。
(もし見つからなかった場合はこちらをご参照ください。)
PropertiesのMailFolderに取得したいメールがあるフォルダーを設定します。(振り分け等していない場合は”受信トレイ”となります。/で繋げればサブフォルダも設定できます。)
OptionsのMarkAsReadにチェックをつけると処理後に既読に、OnlyUnreadMessagesにチェックをつけると未読メールだけが対象になります。
またTopで設定した数の分だけメールを取得できます。(デフォルトでは30なので、最近受信した30メールが対象となります。)
そして、OutputのMailMessagesで右クリックしCreate Variableを選択し、任意の変数名を入力します。(型はMailMessageのListとなります)
今回の例ではUiPathというフォルダにあるメールを対象にしています。
Outlookのイメージはこんな感じです。
UiPathというフォルダにtestという件名のtest.xlsxが添付されている未読メールがある状態です。
続いて、For Eachを使用します。(機能の詳細はループ処理まとめをご参照ください)
Valuesには先ほど作ったMailMessageのList型の変数を指定します。
Type ArgumentにはSystem.Net.Mail.MailMessageを指定します。(プルダウンを開き、Browse for typesからSystem.Net.Mail.MailMessageを検索して設定してください。)
最後にActivities>Available>App Integration>Mail>Save Attachmentsを選択しBodyの中に入れます。
PropertiesのInputのFolderPathに添付ファイルを保存したいフォルダを、MailMessageにFor Eachで回っているMailMessageの変数名を入力します(デフォルトではitem)。
これで実行すると指定したフォルダに添付ファイルが保存されています。
今回は指定したメールボックスのフォルダ内にメールが1つしかなかったため、結果的にループしていませんが、複数あればその分取得出来ます(デフォルトの設定は30)。
また、MailMessage型はいろいろな値が取れるので、「item.subject」とすると件名が「item.Body」とすると本文が取得できたりします。
以上、受信したメールの添付ファイルを取得する方法でした。