Rで解析:Rからメールを送信!「emayili」パッケージ


Rからメールが送信できるパッケージの紹介です。ファイルの添付はもちろん、本文に画像の埋め込みやRmdファイルの埋め込みなどが可能です。実行コマンドではGmailアカウント情報を利用してメールを送信する例を紹介します。なお、Gmailに限らずSMTPサーバー情報があれば他のメールサービスも利用可能です。

また、Googleアカウントに二段階認証を設定していても、アカウント設定から「セキュリティ」、「Googleへのログイン」、「アプリ パスワード」に進みパスワードを取得することで利用可能です。

パッケージバージョンは0.7.5。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("emayili")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("emayili")

#メールを送る準備,envelopeオブジェクト作成:envelopeコマンド
email <- envelope()

#from,to,ccなどを設定:from,to,cc,bccコマンド
#例ではfromコマンド,toコマンドを使用
email <- email %>%
  from("XXXXXXXX@XXXXXX.XXXXX") %>%
  to("YYYYYYYYY@YYYYYY.YYYYYY")

#メールタイトルを設定:subjectコマンド
email <- email %>%
  subject("TEST:からだにいいもの")

#メール本文を設定:textコマンド
#{{XXXX}}で埋め込みも可能です
text <- "karada-good!!"
email <- email %>%
  text("これはテストです!!
       {{text}}")

#添付ファイルを設定:attachmentコマンド
email <- email %>%
  attachment(paste(as.character(tcltk::tkgetOpenFile(title = "ファイルを選択"),
                                sep = "", collapse ="")))

#Rmdファイルの出力を本文に埋め込む:renderコマンド
#[https://www.karada-good.net/analyticsr/r-228/]のRmdファイル
#Rmdファイルの記述が悪いのかrmd内のグラフがgmailでは表示されない?
#しばらく様子見,次回バージョンUPで確認
email <- email %>%
  render(paste(as.character(tcltk::tkgetOpenFile(title = "ファイルを選択"),
                            sep = "", collapse ="")),
         include_css = "rmd")

#本文に画像を埋め込む方法:htmlコマンド,attachmentコマンドを組み合わせる
#cidで設定するのがポイント
html_body <- '<html><body><img src="cid:image" width="600" height="150"></body></html>'
email <- email %>%
  html(html_body) %>%
  attachment(path = paste(as.character(tcltk::tkgetOpenFile(title = "ファイルを選択"),
                                       sep = "", collapse ="")),
             cid = "image")

#gmailアカウントを情報を設定:gmailコマンド
#2段階認証を設定している場合はgoogleアカウントから
#セキュリティーのGoogleへのログイン,アプリパスワードを取得する
#パスワードはログインパスワードではなく、アプリパスワードを設定する
GmailSend <- gmail(username = "XXXXXXXXXX", password = "YYYYYYYYYYYYY")
#作成したGmailSend functionを使用してメールを発信
GmailSend(email, verbose = TRUE)

#他サービスなどを使用する場合の設定方法:serverコマンド
smtp <- server(
  host = "XXXXXXXXXXXX",
  port = XXXXXXX,
  username = "XXXXXXXXXX",
  password = "XXXXXXXXXXXXXXX"
)
smtp(envelopeオブジェクト, verbose = TRUE)

出力例


少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

スポンサードリンク