サーバーで計算を回しているとき
長い計算が終了した際に、自動でメールを送ってくれるとすごく助かります。
方法
SMTPClient.jl
というパッケージとGmailのアプリパスワードを使用して実装できました。
Gmailの設定
次のサイトを参考に作成しております。
Googleアカウントの設定画面から [セキュリティ] > [2段階認証プロセス] > [アプリパスワード]に移動します。
アプリは「メール」、デバイスは「その他(名前を入力)」>「Gmail Julia」としてアプリパスワードを取得して、コピーしておいてください。(後ほどコードに貼り付けます。)
Juliaの設定
- SMTPClientパッケージを追加してください。
- 次のようなファイルを作成してください。
smtp.json
{"passwd":"(コピペした16桁のアプリパスワード)","username":"(Gmailのメールアドレス)","from":"(著名)","url":"smtps://smtp.gmail.com:465"}
- 続いて、メールを送るためのコードを次のように作成してください。
sending_mail.jl
using JSON using SMTPClient, Dates function readsettings() str = open(f -> read(f, String), "(smtp.jsonのあるディレクトリのパス)/smtp.json") settings = JSON.parse(str) return settings end function sendmail(subject::String, message::String) settings = readsettings() opt = SendOptions( isSSL=true, username=settings["username"], passwd=settings["passwd"]) # Provide the message body as RFC5322 within an IO dtstr = Dates.format(Dates.now(), "e, dd u YYYY HH:MM:SS +0900") body = IOBuffer( "Date: " * dtstr * "\r\n" * "From: " * settings["from"] * " <" * settings["username"] * ">\r\n" * "To: " * settings["username"] * "\r\n" * "Subject: " * subject * "\r\n" * "\r\n" * message * "\r\n") url = settings["url"] rcpt = ["<" * settings["username"] * ">"] from = "<" * settings["username"] * ">" resp = send(url, rcpt, from, body, opt) end
以上で設定は終了です。
使い方
sending_mail.jl
をインポートします。
julia> include("sending_mail.jl")
その後、次のように実行することでメールが送付できます。
julia> sendmail(
"(メールのタイトル)",
"(メールの本文)"
)
これで完了です。
最後に
セキュリティには十分お気を付けください!