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: $now() \r\n" *
  "From: you <발신자@naver.com>\r\n" *
  "To: 수신자@kakao.com\r\n" *
  "Subject: simulation over\r\n" *
  "\r\n" *
  "$tic\r\n" *
  "$toc\r\n" *
  "$(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