본문 바로가기
IT/Python

[Python] Send E-Mail - smtplib, MIMEText

by 초록술 2020. 5. 16.
반응형

 

 

sendmail.py 는 시스템 운영 중에 이메일 알림, 경보 등의 목적으로 만든 모듈입니다.

해당 모듈은 자유롭게 사용하셔도 됩니다.

 

sendmail.py 소스입니다.

# -*- coding: utf-8 -*-
# Python 3.8.2

# **************************************************************************************
#
#   brief   Send Email
#
#   file    sendmail.py
#   date    2020.05.14
#   author  ymshim
#
# **************************************************************************************

import smtplib
from email.mime.text import MIMEText


class SendEmail:
    def __init__(self, senderEmailServer, senderEmail, senderPW):
        try:
            self.smtp = smtplib.SMTP(senderEmailServer, 587)
            self.smtp.ehlo()      # say Hello
            self.smtp.starttls()  # TLS 사용시 필요
            self.smtp.login(senderEmail, senderPW)
        except Exception as e:
            print(e)
            self.smtp = smtplib.SMTP(senderEmailServer, 587)
            self.smtp.ehlo()      # say Hello
            # self.smtp.starttls()  # TLS 사용시 필요
            self.smtp.login(senderEmail, senderPW)
        


    def MailSender(self, message, subject, senderEmail, targetEmail):
        msg = MIMEText(message)
        msg['Subject'] = subject
        msg['To'] = targetEmail
        self.smtp.sendmail(senderEmail, targetEmail, msg.as_string())
        self.QuitSMTP()

    def QuitSMTP(self):
        self.smtp.quit()

if __name__ == "__main__":
    
    print("*****************************************************")
    print("* Send E-Mail")
    print("*****************************************************")

    TargetEmail = input('* Target E-Mail address : ')
    SendCnt = int(input('* Mail Send Count : '))
    SenderMailServer = input('* Your(Sender) E-Mail Server : ')
    SenderEmail = input('* Your(Sender) E-Mail address : ')
    SenderPW = input('* Your(Sender) E-Mail  password : ')
    Subject = input('* E-Mail subject : ')
    Message = input('* E-Mail message : ')

    print("*****************************************************")
    print("* E-Mail Send")
    print("*****************************************************")

    SMail = SendEmail(SenderMailServer, SenderEmail, SenderPW)
    SMail.MailSender(Message, Subject, SenderEmail, TargetEmail)    
    
    print("*****************************************************")

 

TestMailSend.py 소스 입니다.

Microsoft Office 365 계정을 통해 메일을 발송합니다.

SMTP 설정으로 'smtp.office365.com'을 사용하면 됩니다.

from sendmail import SendEmail
from datetime import datetime

if __name__ == '__main__':
    # 발송 메일 설정
    SenderMailServer = 'smtp.office365.com'
    SenderEmail = 'admin@greensul.com'
    SenderPW = input(SenderEmail+ '의 password 를 입력해주세요 :')
    SMail = SendEmail(SenderMailServer, SenderEmail, SenderPW)
    
    # 수신 메일 설정
    TargetEmail = 'green@greensul.com'

    # 메일 내용 설정
    Subject = '[장애] System Service 장애 발생'
    Message = datetime.today().strftime("%Y-%m-%d %H:%M:%S.%f") + '''
System Service 장애 발생
'''
    SMail.MailSender(Message, Subject, SenderEmail, TargetEmail)    

 

gmail 을 사용하기 위해서는 다음 포스팅을 참고 부탁드립니다.

 

[Python] Gmail 을 이용하여 메일 발송 시 Error 처리 - Gmail 앱 비밀번호 설정

 

[Python] Gmail 을 이용하여 메일 발송 시 Error 처리 - Gmail 앱 비밀번호 설정

이 전 포스팅에서 Python으로 이메일을 보내는 테스트를 진행하였습니다. [Python] E-Mail Send - Email Bomber Test [Python] E-Mail Send - Email Bomber Test 스팸(Spam) 테스트를 위해 E-mail Bomb(이메일 폭..

greensul.tistory.com

 

감사합니다.

반응형

댓글