logo

ジュリアでネイバーからメールを送る方法 📂ジュリア

ジュリアでネイバーからメールを送る方法

概要

SMTPClient.jlパッケージを使って、SMTPsimple Mail Transfer Protocolでナヴァーからメールを送る方法を紹介する1。長時間かかるシミュレーションが終わったらカカオメールにレポートを送るようにして、研究のスピードを上げるのに使っている。

20220717_232511.png

このようにジョルディが個人トークで知らせてくれるから、自分でサーバーを確認しなくても、シミュレーションがいつ終わるか分かる。

コード

どの言語で実装しても、まず最初に以下のようにナヴァーメールでSMTPを「使用する」に設定する必要がある。

20220717_231516.png

ジュリア

using Dates

tic = now()
for t in 1:1000
  println(t)
end
toc = now()

using SMTPClient
opt = SendOptions(
  isSSL = true,
  username = "네이버아이디",
  passwd = "비밀번호")
#Provide the message body as RFC5322 within an IO
body = IOBuffer(
  "Date: ▷eq1◁tic\r\n" *
  "▷eq2◁(Dates.canonicalize(toc - tic))" *
  "\r\n")
url = "smtps://smtp.naver.com:465"
rcpt = ["<수신자@kakao.com>"]
from = "<발신자@naver.com>"
resp = send(url, rcpt, from, body, opt)

上の例では、最も重要な部分はurl = "smtps://smtp.naver.com:465"だ。ナヴァーでなくても、どのサーバーを使うにしても、ここを適切に変える必要がある。送信時刻の場合はDatesモジュールnow()を使って、メールを送る時点に固定したが、これが実際の時計と合わないと、10分ほど遅れて送られる問題を経験した。

パイソン

ジュリアを試す前に、まずはパイソンで試したコード。不思議なことに、SSLを使ってポートを456にしてもうまくいかなかったが、SSLを切って587にしたらうまくいった。参考にしたブログ2ではグーグルを基準に説明していたが、以下のコードはナヴァーを基準にうまく動作することを確認した。

import smtplib
from email.mime.text import MIMEText

sendEmail = "발신자@naver.com"
recvEmail = "수신자@kakao.com"
password = "비밀번호"

smtpName = "smtp.naver.com" #smtp 서버 주소
smtpPort = 587 #smtp 포트 번호

text = "매일 내용"
msg = MIMEText(text) #MIMEText(text , _charset = "utf8")

msg['Subject'] = "시뮬레이션 종료"
msg['From'] = sendEmail
msg['To'] = recvEmail
print(msg.as_string())

s=smtplib.SMTP( smtpName , smtpPort ) #메일 서버 연결
s.starttls() #TLS 보안 처리
s.login( sendEmail , password ) #로그인
s.sendmail( sendEmail, recvEmail, msg.as_string() ) #메일 전송, 문자열로 변환하여 보냅니다.
s.close() #smtp 서버 연결을 종료합니다.

環境

  • OS: Windows
  • julia: v1.7.0