【UiPath×Gmail】メール送信自動化(SMTP,HTTP)

メール送信、RPAで自動化しませんか???

営業や顧客対応など様々なところでメールが使用されており、定型文のメール送信はシステムによって自動化されている会社も多いと思います。

RPAは連携システムにかかわらず自動化できますし、短期的な費用はシステム導入より安くなります。(中長期的にみるとシステムのほうが安くなる場合も)

「自動化できたらいいなあ」「規模は小さいけど自動化したい」など、システム導入に踏み切れない方々こそ、RPAでの自動化を試してみるとよいかと思います。

 

すでにRPAでメール送信を自動化されている方々、UI操作(クリックや入力)で自動化していませんか??

UI操作の自動化は最終手段であり、可能出れば直接的なデータ連携をしたほうが良いと私は考えております。なぜなら処理速度も正確性も桁違いだからです

本記事では私の使っているUiPathでのGmail送信方法について説明します。

連携サーバーの違い

ネットを使ったデータのやり取りは、中継点・保存場所としてサーバーというものを使っています。

メール送受信の場合、大きく分けてメールサーバーWebサーバーという二つのサーバーを使っています。

メールソフト(インストール必要。thunderbird等)はメールサーバー、Webメール(インストール不要。Yahoo!メール等)はWebサーバーを使っています。

両サーバーが使えるもの(Gmail等)も数多く存在します。

また、メールサーバーにはプロトコル(通信方法)による分類があり、送信用のSMTP受信用のPOP3、IMAPがあります。

対してWebサーバーでのメール送受信はHTTP(HTTPS)というプロトコルを使います。

以下では双方での自動化を行います。

SMTPサーバーでの送信自動化

UiPathには「Send SMTP Mail Message」というSMTP専用のアクティビティがあり、とても簡単にとても簡単に(重要なので2度言いました)メール送信の自動化ができます。

ではなぜWebサーバーの連携も紹介するのか???それは後述します。

※社内サーバーでメールの送信を行っている場合、こちらになります。

Send SMTP Mail Message

①アクティビティを選択します。

②メイン設定では「送信先メールアドレス」、「件名」、「本文」、「添付」の設定ができます。

③プロパティフィールドで詳細設定を行います。

「Host」では「サーバードメイン」と、「Port番号」を指定します。

社内サーバーなど設定していないデフォルトの場合、サーバードメインはGoogleのSMTPサーバー「smtp.gmail.com」であり、Port番号は「465」でよいでしょう。

「Login」は「メールアカウント」とその「ログインパスワード」を指定します。

※社内サーバーの場合は上記の限りではありませんので、情シスの方に確認してください。

※ログインパスワードはセキュリティの関係上「公開できない」と言われるかもしれません。その場合に次の章の「Webサーバーによる送信」を行いましょう。

④送信元メールアドレスの設定もできます。

⑤実行します。ウィンドウは送信先メールアカウントの受信トレイです。

⑥メールが送信されました。以上です。

実行時に以下のエラーが出た場合、次の処理をしてください。

これは、アカウントから自動メールを送る際に、不正なログインとしてアカウントがメソッドをブロックしたために発生しています。

 

①Gmailアカウントにログインし、アカウントページを開きます。「ログインとセキュリティ」に移動します。

②「セキュリティ」に移動します。

③安定性の低いアプリのアクセスを「有効」にします。以上でエラーは出なくなるでしょう。

動画

この章の内容を簡単な動画にしました。ぜひご覧ください。

Webサーバーでの送信自動化

続いてWebサーバーでの送信です。

先ほどのSMTPとは違いアクティビティが存在しないため、APIによる細かな設定で送信します。とてもとても大変です。しかし、この記事を見れば作れるようわかりやすさを心がけていますのでどうかお読みください。

また、前章で少し触れましたが、サーバーのログインパスワードが入手できない場合はこの方法をとります。(私もその一人です。)

 

※Webメールの場合、社内サーバーで設定できるのはメールサーバーなのでWebサーバーでの連携は可能です。

送信シナリオ

GmailAPIを用いた送信は以下の5パートで構成されます。

①アクセストークン取得

API連携に必要なアクセストークンを取得(更新)します。

②RFC2822メール構造の使用

メール構造でデータを送信します。

③件名のbase64エンコード

文字コードをメールデータ送信用のbase64データに変換します。

④メール(ヘッダー、本文)作成

②のフォーマットに必要情報を埋め込みます。

⑤メール送信

完成したデータを「HTTPリクエスト」で送信します。

 

①GmailAPIアクセストークンの取得(更新)

GmailAPiを用いてデータ連携を行う場合、アクセストークンというカギが必要になります。

この鍵には有効時間が定められており、失効後は更新(リフレッシュ)により再度アクセストークンが取得できます。

ここではその更新によりアクセストークンを取得しています。

 

GmailAPIトークン取得については以下記事で丁寧に解説しております。

【UiPath×Gmail】GmailAPI初期設定~トークン取得

②RFC2822メール構造

APIによるメール送信では、メール構造の中に情報を埋め込み送信します。以下が今回用いるRFC2822というメール構造です。

【】(墨かっこ)になっている部分に必要な情報を埋め込みます。

mail_To,Cc,Bcc:送信先アドレス(Cc,Bccは空でも構いません)

件名:件名を入力するのですがbase64エンコードされた件名を入れます。

本文:メール本文

attachment_mime:添付ファイルのMIMEタイプを指定します。例:text/plain(.txtファイル)

attachment_name:添付ファイルのファイル名

attachment_body_base64:添付ファイルのデータ全体をbase64エンコードしたもの

③base64でエンコード

上で説明したように、件名と添付データはbase64という文字コードにエンコードする必要があります。以下は件名のエンコード部分になります。

base64変換についても以下記事で詳しく書いています。

【UiPath】.Netによるbase64変換

④メール作成

②で述べたフォーマットに必要な情報を埋め込みます。.Replaceメソッドなどでよいでしょう。

エンコードおよび値を入力したものは次になります。

※今回は添付ファイルを入れていません。

⑤メール送信

APIでおなじみHTTPリクエストを使います。

エンドポイントは「https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadtype=multipart」になります。

「OAuth2Token」の部分に①で取得したアクセストークンを、「Body」に④で作成されたメール構造(埋め込み済み)を設定します。

「BodyFormat」を「message/rfc2822」に変更してください。

これで実行するとメールが送られるはずです。

 

動画

この章の内容を簡単な動画にしました。ぜひご覧ください。

パッケージ配布

見ていただいたようにWebサーバーでのメール送信はアクティビティがないため、非常に複雑で設定も難しいです。

なので、、、私がアクティビティとしてパッケージを作成しました

それがこちらです。

これを配布したいと思います!!!!

お求めの方はブログへのコメントもしくはTwitterのダイレクトメッセージにて「Gmail送信のパッケージほしいです」と一言ください。簡単なアンケートと引き換えに、パッケージファイルと手順書をメールにて送付いたします。

また、このパッケージも配布にあたってより使いやすいものに改良します。

 

パッケージにの使い方は以下記事になります。

【UiPath】Library~シナリオのパッケージ化~

終わりに

APIによる自動化はなかなかに困難で諦めることも多いかと思います。(ノンプログラマーの方はなおさら)。

私の記事で皆さんの自動化ライフがより良いものになることを心から願っております。


sweeep|請求書AI-OCR

請求書の会計処理を自動化します
請求書AI-OCR「sweeep」

面倒な請求書の会計処理をAIで自動化。100枚をたった3分で処理できます。月末に貯まった請求書を一掃しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

ハイダックと申します。以前UiPathによる自動化業務に従事しておりました。現在は、趣味でアプリ連携やロボット作成を行いながらそこで得た体験や知識をTwitter(@Hiduac)やブログにて発信しております。自動化相談や技術相談、UiPathによるPoC等、大募集しておりますのでお気軽にご連絡ください。