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

Rの解析に役に立つ記事
スポンサーリンク

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

また、Googleアカウントでのアプリ パスワードの設定は「Google にログインする方法」より設定します。なお、「2 段階認証プロセス」がセキュリティ キーで設定されている場合は「アプリ パスワード」が表示されない場合があります。

その場合は下記URLから「アプリ パスワード」を設定してください。

・アプリ パスワードの設定 *Google アカウントへのログインが必要です。

https://myaccount.google.com/apppasswords

パッケージバージョンは0.9.1。実行コマンドはR version 4.4.1で確認しています。

スポンサーリンク

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

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

install.packages("emayili")

usernameとpasswordを”.Renviron”ファイルに保存して使う

メール送信に必要な「Googleアカウント」と「アプリ パスワード」の情報は「server」コマンドに直接設定も可能です。しかし、コマンドに直接設定することはよくないといいますので、環境変数を保存する”.Renviron”ファイルを作成するとコード内に「Googleアカウント」と「アプリ パスワード」を保存する方法を紹介します。情報の読み出しは「Sys.getenv」コマンドを使用します。

###Documentsフォルダに".Renviron"ファイルを作成する#####
# まずは環境変数の確認
# Sys.getenv()

# ファイルパスを指定:Documentsフォルダ
doc_renviron <- path.expand("~/.Renviron")

# ".Renviron"ファイルが存在するか確認
if(!file.exists(doc_renviron))
  # 存在しなければ作成
  file.create(doc_renviron)

# ".Renviron"ファイルに書き込み
write_Renviron <- file(doc_renviron, "w" )

### 注意:個人使用のパソコンで第三者の使用がないことを想定しています
# Googleアカウント名を設定
writeLines('GMAIL_USERNAME="Googleアカウント名@gmail.com"', write_Renviron)

# アプリパスワードを設定
writeLines('GMAIL_PASSWORD="アプリパスワード"', write_Renviron)
########

# ".Renviron"ファイルを閉じる
close(write_Renviron)

# 気になれば".Renviron"ファイル内容を確認
# RStudioで開くと修正,保存が楽です
file.edit(doc_renviron)

# Rをrestartして内容を反映
.rs.restartR()

# 最後に環境変数を確認
#Sys.getenv()

# 設定の呼び出し
# 設定したGoogleアカウント名,アプリパスワードが表示されるとOK
Sys.getenv("GMAIL_USERNAME")
Sys.getenv("GMAIL_PASSWORD")
########

実行コマンド

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

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

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


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


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


# メール本文を設定:textコマンド
# glueパッケージ表記の{{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ファイル
# ファイルはこちらからhttps://www.karada-good.net/wp/wp-content/uploads/2022/02/markdownEX.rmd
email <- email %>%
  render(paste(as.character(tcltk::tkgetOpenFile(title = "ファイルを選択"),
                            sep = "", collapse ="")),
         include_css = "rmd")


# メールを送信:serverコマンド
# 例はGoogleで送信
smtp <- server(
  host = "smtp.gmail.com",
  port = 465,
  username = Sys.getenv("GMAIL_USERNAME"),
  password = Sys.getenv("GMAIL_PASSWORD")
)

# 送信
smtp(email, verbose = TRUE)

出力例


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

タイトルとURLをコピーしました