03.Program/03.Python
[Python] python 에서 메일 보내기
basicinfo119
2022. 4. 13. 21:13
728x90
반응형
파이썬 메일 보내는 방법
파이썬에서 메일 보내는 방법에 대한 코드 공유입니다.
리눅스에 설치된 SendMail 서버를 통해 첨부 파일과 함께 메일을 보내는 예제입니다.
코드양은 많지 않아 별도로 설명 하지는 않습니다.
조금씩 수정해 보면서 사용자 용도에 맞게 변경해서 적용해 보세요
Python STMT Mail Send 코드
- python2.7 환경에서 작성되었습니다.
- 메일주소는 테스트할 주소에 맞게 수정해서 테스트하세요
- 메일서버 구성은 해당 글을 참고 하세요
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import smtplib
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.encoders import encode_base64
from email import Utils
from email import Encoders
import os
sys.setdefaultencoding("utf-8")
STMT_HOST='localhost'
PORT = 25
COMMASPACE = ", "
class StmtMail:
def __init__(self):
self.stmt_host = STMT_HOST
self.port = PORT
self.from_user = ''
self.to_user = ''
def sendmail(self,from_user, to_user, cc_users, subject, contents, attach):
try:
print " Mail Send "
msg = MIMEMultipart()
#msg = MIMEMultipart("alternative")
msg["From"] = from_user
msg["To"] = to_user
msg["Cc"] = COMMASPACE.join(cc_users)
msg["Subject"] = Header(s=subject, charset="utf-8")
msg["Date"] = Utils.formatdate(localtime = 1)
msg.attach(MIMEText(contents, "html", _charset="utf-8"))
if (attach != None):
part = MIMEBase("application", "octet-stream" ,charset="utf8")
part.set_payload(open(attach, "rb").read())
Encoders.encode_base64(part)
part.add_header("Content-Disposition", 'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)
smtp = smtplib.SMTP(self.stmt_host, self.port)
smtp.sendmail(from_user, cc_users, msg.as_string())
smtp.close()
except Exception, e:
exc_type, exc_value, exc_traceback = sys.exc_info()
print "[-] Error : %s " % e
print "[-] line number : " , exc_traceback.tb_lineno
if __name__=="__main__":
try:
print " Mail Send "
stmtmail = StmtMail()
stmtmail.sendmail("example@co.kr", "example@co.kr", ["example@co.kr"] \
, "Python Send Mail Test " \
, "TEST MAIL" \
, None)
except Exception, e:
exc_type, exc_value, exc_traceback = sys.exc_info()
print "[-] Error : %s " % e
print "[-] line number : " , exc_traceback.tb_lineno
테스트 결과
- sendmail.py 실행
(py27) [pythontest@centos7:/home/pythontest/venv/py27/test]$ python sendmail.py
Mail Send
Mail Send
Mail Send
Mail Send
스팸 메일로 정상적으로 메일이 전송되었습니다.
728x90
반응형