この設定を変更すると,Gmailに「重要なセキュリティ通知」というタイトルのメールが来るので,この設定変更に心当たりがあると入力しておきます.
続いて,メールアドレス,パスワードなどを設定ファイルとしてJSONに保存する機能を作成します.
using JSON
function initsettings()
settings = Dict(
"url" => "smtps://smtp.gmail.com:465",
"from" => "You",
"username" => "you@gmail.com",
"passwd" => "yourgmailpassword"
)
json = JSON.json(settings)
open("smtp.json", "w") do f
print(f, json)
end
end
function readsettings()
str = open(f -> read(f, String), "smtp.json")
settings = JSON.parse(str)
return settings
end
initsettings()で設定ファイルを作成し,設定を自分のGmailアカウントに合わせて変更しておきます.
それから,メール送信をするコードを作成します.といいつつSMTPClientパッケージのサンプルコードをほぼそのまま使うだけです.
using SMTPClient, Dates
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
ユーザー名,パスワード,送信元,送信先などは設定ファイルから読み込んだ値を使用します.また,Datesで送信時刻を付加するようにします.それと,関数化してメールタイトルとメッセージ文字列だけ指定すれば送れるようにしておきます.
試しに送ってみましょう.
julia> sendmail("テストメール", "Juliaからのメール送信のテストです.")
Return Code: 250
Time: 3.462054
Response:
ちょっと時間がかかりますが,無事送信できました.