【R】Rの解析結果をメールで送信する方法4選

2022-06-17

メールを確認する男性の写真

スクリプトでバッチ処理的に解析する場合や時間のかかる解析は、解析結果をメールで送ってくれると便利なのに、と思うことが多々ありますよね。

Rからメールを送信するパッケージは数種類ありますが、ここでは「単純にメール送信ができればいい」方向けに4種類のメール送信用パッケージの紹介と、メールを送るまでの準備をまとめています。

メール送信の前準備

何よりも、メールを送るためのSMTPサーバが必要です。

Gmailに接続できて、自分のアカウントを使って送るだけならGmailを使うのが手っ取り早いです。(2段階認証を設定していれば)アプリパスワードを使っての接続になるため、まずはGoogleアカウントからアプリパスワードを作成してください。

色んな理由でGmailを使えない(使いたくない)場合、ご自身で利用できるSMTPサーバを用意してください。登録は必要ですが、個人で使う範囲なら無料で使えるSMTPリレーサービスを使えば簡単に用意できます。

パッケージ一覧

ここに紹介するパッケージ以外にもRでメールを送信できるものはありますが、Windows OnlyやAPIを利用するためのアプリ作成が必要になるものは載せていません。

シンプルに使えるパッケージ

emayili

とにかくシンプルに使えるパッケージです。SMTPサーバの設定も記述でき、コード内で全て完結できるので非ITエンジニアでも分かりやすく使えます。

解析結果の添付や、Rmarkdownの出力もレンダリングして送信できるため、単純に結果をメールで送りたい場合はこのパッケージで十分です。

*その分、パスワードもコード内に直接保存されるためセキュリティ面は注意が必要です。

sendmailR

こちらも、emayiliと同様にシンプルに使えます。ただし、認証が必要なSMTPサーバは使えないため認証無しで使えるSMTPサーバが必要になります。

XAMPPで簡単にSMTPリレーサーバの構築(作成予定)

便利?な機能が使えるパッケージ

mailR

*JAVAのインストールが必要です。

送信したい情報を記載したデータセットに沿って、繰り返してメールを送信することができます。もちろん、他のパッケージでも同じ事はできますがmailRを使うと繰り返して送る処理が簡単に記載できます。

blastula

解析結果を見やすくなるよう、装飾にこだわってメールを送りたい場合はblastulaが便利です。

blastulaパッケージを使用すると、RからHTMLメールを簡単に作成して送信できます。メッセージには3つのコンテンツ領域(本文、ヘッダー、フッター)を含めることができ、マークダウンテキスト、ブロックベースのコンポーネント、さらにはHTMLフラグメントを挿入できます。基盤となるHTML/CSSは、さまざまな電子メールクライアントおよびWebメールサービスで適切に表示されることを目的としています。結果のメールメッセージはレスポンシブなので、大型ディスプレイとモバイルデバイスの両方で見栄えがします。

https://github.com/rstudio/blastula

正直、私はそこまでレイアウトにこだわるメールを送らないためあまり使いこなせてはいませんが、ggplotで作ったグラフやテーブルを使って、Rmarkdownでは難しいレイアウトを作りたい場合は便利なパッケージだと思います。

解析者本人が使うと言うよりは、顧客に対して解析結果を送る場合は重宝しそうです。

最初に認証情報を作成する必要があるため、非対話的に使いたい(自動化)場合は注意してください。ですが、認証情報さえ作ってしまえば、後は自動化できます。

他のパッケージ

検証していないパッケージですが、メールを送信するパッケージは他にもあり、こちらのサイトでは色々と機能を紹介してくれています。

mailgunを使っている方は「IMmailgun」が便利かもしれません。また、GmailのAPI(アプリケーション)を作る必要はありますが「gmailr」はGmailの機能を使えるので、メールを使いこなす必要がある場合は便利だと思います。

結論

私の用途(定型処理をバッチで実行して、結果を送信)では複雑な操作は必要ないため、emayiliを使っています。

個人用のGmailは使いたくなく、SMTPサーバの準備が必要なためメール送信機能の導入をためらっていましたが、SMTPリレーサービスであっさり解決したのでとても便利になりました。

Rで簡単にメール送信できると、かなり便利になりますよ。

分析環境E-mail

Posted by ううら