メールを送信直前の状態でファイル出力したい

お世話になります。

以下のフローでのRPA開発を考えています
1.Robotでメールを作成
2.ファイルとして出力しファイルサーバに格納
3.人が内容を確認し手動送信

現状は"メールメッセージを保存"アクティビティにて.eml形式での保存を検討しています。

ただし、.emlのファイルを開いた際、送信するまでに「"ファイル"を開く→メール再送信を選択…」のように複数のステップが存在します。

Outlookのメール作成画面で"名前を付けて保存"した場合、送信直前の状態の.msgファイルが作成されるかと思いますが、この状態のものをRPAで作成したく思っています。
(ファイルを開いたら「送信」ボタンを押すだけで送信できる状態)

実現する手段がありましたらご教示いただきたいです。

■補足
・OutlookのGUI操作はしない方針
・Outlookの「下書き」として保存も不可(RPA機からは送信しない)

よろしくお願いいたします。

1 Like

こんにちは

まずは以下あたりの検討でしょうか。

1 Like

@Yoichi
こんにちは、ご回答ありがとうございます。
早速検証してみましたが、両者共にエラーが発生しました。

【前者】
System.Runtime.InteropServices.COMException:
アイテムを開けませんでした。もう一度試してみてください。

【後者】
System.ArgumentOutOfRangeException:
有効な Win32 FileTime ではありません。

エラー内容の精査はしていませんが、後者については64ビットOSが影響しているのかなという印象です。前者は不明です。

1 Like

@nittobo5さん

まし.emlファイルRPA機からは送信しないなら、自動化として考えて、
VBAで送信したほうがいいと思います。
image

image
簡単なサンプルを作成して、「GitHubの VBA_SEND_MAIL」に公開しました。ご参考まで

1 Like

@ui-path-example
こんにちは、ご回答ありがとうございます。
サンプルまでご提供いただき、非常に助かります。

サンプルのソースがパスワードロックで見れなかったため憶測になりますが、xlsmの送信ボタンを押すことでA列に記載されているemlが全件送信されるという内容でしょうか。
(違っていましたらすみません)

ToBeの業務手順として、メールを1件1件確認し、“送信”/“修正して送信”/"送信しない"という3つの分岐が発生すると想定しています。(基本的に送信になるとは思いますが…)

送信しないemlが発生(もしくは修正してその場で送信)した場合、emlのパスをxlsmから削除するという手順が発生すると推察しますが、やはり手作業となるので削除するパスを誤るリスクを考えてしまいます。※特に類似したファイル名が複数生成される場合

その点がクリアできればVBAでの運用も現実的になるので、少し方法を考えてみます。

1 Like

こんにちわ!

今、下記のカスタムアクティビティを試しました。
私の環境では、.MSGファイルが正常に保存されます。
(ちなみにWindows10 64ビットOSです)

私が試したのは、受信メールから取得した「MailMessageオブジェクト」を、
そのまま、このカスタムアクティビティに渡し、プロパティで指定している
「ファイル名」で保存されます。

2 Likes

@Jun1
こんにちは!お世話になります。

Jun1さんの検証された通り、受信トレイから取得したMailMessageオブジェクトを指定して再度検証してみたところ正常に保存することができました。
当初は新規でMailMessageを作成したものに対して指定していたので、この辺りにエラーの原因がありそうです。

ただ、この方法で出力したmsgファイルは再送信が出来ないみたいなので、下書き目的で使用するのは厳しそうですね…

ともかく謎が一つ解消されました、ありがとうございます。

1 Like

こんにちは!

確証は取ってませんが、受信メールのまま、保存しているため、
開いた時に返信操作になっている可能性があります。

1 Like

@Jun1
こんにちは

受信メールから作成したmsgファイルをOutlookにて開いてみたところ、
emlファイルを開いた際と同様の画面で開かれてしまい、返信操作にはなりませんでした。

また、受信メール以外から取得した場合も同様ですね…

1 Like

本件以下の手順で実現することが出来ました。

1.RPAでMailMessageオブジェクトを作成
2.Outlookメールメッセージ送信アクティビティで下書き出力
3.Outlookメールメッセージを取得アクティビティで下書きフォルダのメールを取得
4.Yoichiさんが提示くださった前者のカスタムアクティビティでMsg出力

以上の手順で出力されたMsgファイルを開くと、送信直前の状態で開かれることを確認しました。
後者のアクティビティの場合は何故か下書きから取得したMailMessageを認識してくれなかったため放置しています。

一度Outlookの下書きフォルダを経由することでHeader情報等の必要な情報が付与され、下書き状態で出力できたのかなと雑に考察しています。

なお、PJの制約として「第3者によるカスタムアクティビティは基本的に使用不可」であったため、上に記載した方法での実装は厳しいという結果に終わりました。

手順4の箇所をカスタムアクティビティを使用せず実現する方法を引き続き模索します。
引き続きご助言いただければ幸いです。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.