메일 발송
SMTP를 활용하면 메일을 발송 봇을 만들 수 있다. 해보자
Prerequisite
이 글은 리눅스 환경을 기반으로 한다. SMTP서버를 구축하는 것 또한 포함한다.
그러므로, 윈도우에서 개발하는 경우 안타깝지만
하도록 하자
1. SMTP서버 구축
간단하다 postfix를 설치하면 된다
sudo apt-get install postfix
딱히 설정할 것은 없다. 메일 '발송' 봇을 만드는 것이기에 골치아픈 메일 수신을 위한 각종 설정을 할 필요가 없기 때문이다.
2. 메일 생성
간단한 Text를 본문으로 갖는 메일을 만들어보자
from email.mime.text import MIMEText
mail = MIMEText('this mail contains messages from makerj!')
mail['Subject'] = 'this is mail title'
From과 To는 메일을 발송할 때 설정하면 되므로 메일에는 정말 메일의 제목, 내용만을 다루자.
3. 메일 발송
2에서 생성한 메일을 발송하자
import smtplib
mailserver = smtplib.SMTP('localhost')
mailserver.sendmail('admin@mysite.com', ['p1@example.com, p2@example.com'], mail.as_string())
sendmail은 From, To, Mail이다.
예제와 같이 To는 리스트 형식으로 여러명에게 동시에 발송할 수 있다. 한명한테만 보내려면 리스트 만들 필요 없고, 그냥 문자열 형식을 쓰자.
부록. 외부 SMTP 서비스를 사용해서 메일 보내기
이 부록은 TLS를 통한 외부 SMTP서버를 이용하는 것을 다룬다.
TLS를 지원하지 않는 메일 서버에 접속하는 방법은 다루지 않는다. 데이터 보호가 안되는 외부 메일 서버는 이용하기 싫기 때문이다.
server_ssl = smtplib.SMTP_SSL('smtp.gmail.com', 587)
server_ssl.ehlo() # optional, called by login()
server_ssl.login('example@gmail.com', 'password')
server_ssl.sendmail('example@gmail.com', 'foo@example.com', mail.as_string())
server_ssl.close()
이렇게 하면 실제로 gmail 서비스를 사용해서 메일을 발송할 수 있다. (당연히 주석1에서 언급한대로 구글 계정을 설정해두었다고 가정)
- 참고로 Gmail은 다른 메일 서비스와는 다르게 보안이 굉장히 강력하다. 그 결과 웹 브라우저를 사용한 접근이 아니면 로그인을 차단한다(!) Gmail을 사용하고 싶다면 구글 계정 페이지에서 보안 레벨을 낮추면 된다. '신뢰할 수 없는 접근'의 보안을 해제하자 [본문으로]
'Python' 카테고리의 다른 글
python multiprocessing AttributeError (0) | 2016.02.08 |
---|---|
os.path 사용하기 (0) | 2016.01.13 |
Random (0) | 2015.12.08 |
IP확인 (0) | 2015.12.08 |
Python Time (0) | 2015.11.17 |