受信メールの添付ファイルを保存する

いつもお世話になります。

受信メールの添付ファイルを自動的に保存させてみようとして、

POP3メッセージ受信 → 繰り返し(for each)処理の中に、添付ファイル保存

という設定をしております。

添付ファイル保存処理のアクティビティにエラー表示が出てくるのですが、
「式”item”の処理中にコンパイルエラー発生しました。option strict “object"から”system.net.mail.mailmessage”
への暗黙の方変換はできません」

と出てきまして自動処理が出来ないのですが、何か設定が必要でしょうか?

教えて頂けましたら幸いです。

【現在の設定内容】
POP3メッセージ受信の出力をmail という変数(List)に設定。

繰り返し処理の 要素:item(初期値)
繰り返し処理の コレクション:mail

添付ファイル保存処理には、item と設定して、保存先のディレクトリは任意のローカルフォルダ

としております。

メールソフトは、サンダーバードを利用しております。

1 Like

ForEachのTypeを「system.net.mail.mailmessage」に設定してみてください :raised_hand:

%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3

有難う御座います!
エラー表示が解消しました!

受信メールの添付ファイルを指定のフォルダへ保存する設定をしております。

処理を実行しても、指定のフォルダへは添付ファイルが保存されず、

実行処理の途中で止まっているようで、処理が終了しません。

実行タブの「検証ボタン」で検証してみましたが、「エラーはありません」と表示されます。

何か他の設定が必要でしょうか?

どこで止まっているか検証の為、
下記設定でメールと添付ファイルを正しく取得出来ているかまず確認してみた方が良いかも? :face_with_monocle:
(既に確認済みでしたらすみません )

  • 取得メッセージ数を少な目に設定する(3件とか)
  • 添付ファイル保存前にWriteLineで取得メール件名を書き出す(item.Subject で書き出せます)
  • 添付ファイル名をWriteLineで書き出す

確認してみました!
1行を書き込みというアクティビティを追加しました。

処理を実行しても何も現れないので、
メールを取得出来ていないという事でしょうか。

メールソフト(サンダーバード)の起動、自動メール送信は他の設定で自動処理
の動作は確認済みです。

メールサーバのアカウントやパスワードの設定も確認してみて、
タイプミスなどの間違いは無かったのですが、何かの設定が足りてない
のでしょうか。

こんにちは

原因切り分けのためにPOP3メールメッセージを取得アクティビティの下に
Write LineやLog Messageで mail.Count.toString の値を書き出してみると良いと思います。

0件なら、メール自体が取得できていません。そのため繰り返しの内部を処理せずに、処理が進んでいると思います。
1件以上なら、繰り返しの中が怪しくなります。
もしログが出ていないようであれば、POPでのメール取得のところが怪しくなります。

ちなみにPOP3メールメッセージ取得アクティビティ自体は、POP3プロトコルを用いて直接POP3サーバーと通信を行うので、その挙動に関してはメールクライアント(この場合サンダーバード)とは無関係になります。(設定はお使いのメールクライアントと同じであるべきと思いますが。)
もしメールクライアント側で受信時にサーバー側のメールを削除する設定の場合(POP3の場合はこちらのほうが一般的と思いますが)、サーバーにはメールは残っていませんので、このあたりの設定も注意する必要があるかと思います。

本件とは関係が薄いですが、注意喚起として。
[添付ファイルを保存](save attachments)Activitiesですが、HTMLメールの埋め込み画像も添付ファイルとして保存してしまうようです。
(mailItemのPropertyAccessor.GetPropertyでHTMLの埋め込みか判断はできるので展開前に調べれば除外はできます。)

ver2018.1.2環境より
(ver.2018.3が触れない環境なので、もしかしたら現在はプロパティが増えているかもしれませんが・・)

有難う御座います。

メッセージ取得アクティビティの下に、
writeLine と LogMessage を追加してみました。

自動処理実行してみましたが、画面には何も現れませんでした。

という事はメールサーバ側でメールが削除されている可能性が高いと
思いまして、一度、メーラーを落とした状態で、
他のPCから該当のメールアドレス宛にメール送信してみました。

これでメーラーそのものは受信していないのでサーバ側にデータがある状態
となったので、再度自動処理実行しましたが、
やはり何も画面には現れませんでした。

サンダーバードのメーラーは対応していないのでしょうか?
IMAPメールを受信というアクティビティもありましたが、
Gmailは利用可能でしょうか?

有難う御座います。

添付ファイル以外に、HTML埋め込み画像も添付データとして判断して、
取り込んでしまうのですね。

mailitem PropertyAccess.getproperty を利用すれば、埋め込み画像を除外設定
出来という事ですね。添付データがまず取得出来れば一度トライしてみます。

こんにちは

自動処理実行してみましたが、画面には何も現れませんでした。

Write LineやLog Messageの情報はログとして出力されます。Studioから実行しているのであれば、「出力」のパネルに表示されるのですが、そこに何も出ていないということでしょうか?
もしメールの設定がよくないのであれば、何らかのエラーが出ていると思うのですが。

なおPOP3やIMAPはメール受信の通信プロトコルになります。そのためサンダーバードなどのアプリケーションとの対応とは別の話になります。(UiPathはサンダーバードを介さずに、直接サーバーと通信を行います。)

UiPathでGmailのメールをPOP3/IMAPで受信する方法は以下のURLにも記載されていますのでこちらも参考にするとよいかもしれません。(既にサンダーバードでPOP3を用いて受信てきているなら、あまり関係ないかもですが。)

度々有難う御座います。
出力の欄にはエラー表示は無く、実行の開始としか現れてきません。
処理が進まないので、強制的に終了すると、実行が終了しましたと
出てきます。

メールの処理のエラーが無いという事は、自動処理の設定で
何かミスがあるでしょうか。

メールそのものの送受信は出来ています。

サーバーに対して直接メールを取得するのですね。
一度、サーバ側にメールが残っているか確認して、その状態で処理を
実行してみます。

こんにちは

通常Write LineやLog Messageのアクティビティが処理されれば、出力パネルに何らかの表示がされますので、上記結果から勘案するとそこまでたどり着いていない(「POP3メールメッセージを取得」以前で止まっている)と判断できると思います。

原因切り分けのために、念のため「POP3メールメッセージを取得」の手前にLog Messageなどを入れて、そこまでは実行できているか否かを確認する必要があるかと思います。
明らかに「POP3メールメッセージを取得」で処理が止まっていることが確認できれば、その部分の設定を疑うことになると思います。
サーバー名、ポート番号などの設定はいかがでしょうか?必要に応じてSecureConnectionの方法もAutoではなく明示的に指定したほうが良いかもしれません。

あるいはIMAPが利用できるならそちらのアクティビティを利用する等のワークアラウンドも考えられます。(サーバー側でIMAPの設定ができていることが前提になりますが)

有難う御座います!無事解決しました!
ポートの番号に誤りがありました!

良好に動作しております!
Autoの状態でも動作良好です!

何度か同じ処理を実行してわかったのですが、
過去に読み取ったメールの添付ファイルは、(取得したデータ)
重複して取得してきたりせず、自動処理で判断してるのですね。

ある程度まとまった件数のメールを取得させてみたとしても、
過去に読み取ったデータを弾いてくれて、
新規の添付データのみ取得するのでしょうか?

こんにちは

ある程度まとまった件数のメールを取得させてみたとしても、
過去に読み取ったデータを弾いてくれて、
新規の添付データのみ取得するのでしょうか?

GmailのPOPは少々特殊のようでして、特になにも設定しなければサーバー側で重複ダウンロードを避けるようになっているようです。
通常のPOPサーバーの利用かつサーバー側にメールを残すのであれば、重複排除は自力でケアする必要があるかもしれません。

有難う御座います!
通常のPOPサーバ利用では、添付ファイルの
重複ダウンロード回避は自力で設定する必要があるのですね。

現在、画像の添付ファイルを取得させようとして
調べています。
現段階の設定では、画像の添付ファイルが取得されません。
画像の添付ファイルの場合は、メール取得アクティビティの
変数の型を変える必要があるでしょうか?

こんにちは

現段階の設定では、画像の添付ファイルが取得されません

対象の画像の Content-Dispositionが attachment ではなく inline になっているとか、そのあたりの確認が必要かもしれません。

有難う御座います!

Content-Dispositon とはUIpathの設定上の事でしょうか?

教えて頂けましたら幸いです。

こんにちは!

andoroid や、iphone 、mac(PC) から、それぞれ同じように画像を
送信してみました。

受信するパソコン Windows10

andoroid → 画像添付データを取得出来た。(他の種類のデータは試して
ないです)

iphone →画像データ、PDFデータ送信しても、取得できない。

mac →mac のネイティブアプリのメーラー(メール)から送信する。
添付の画像データ取得できない。
添付のテキストデータは取得できる。

 →ブラウザでGmailにログインして、そこから送信すると
  画像添付データ取得できます。

送信する側の設定の問題のように思うのですが、
UIPATHに対して画像データを送信する場合のやり方等あれば
教えて頂けましたら幸いです。