[Python] Gmail SMTP 서버 사용해서 이메일 보내기 (Sending Email using Gamil ID)

목적: Gmail SMTP 서버를 사용하여 이메일 발송하기

환경: Ubuntu 16.04 + Python 3

Prerequisite Module(s): smtplib

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

class mkSendEmail:
    def __init__(self, sentTo, subject, content):
        emailAddr = "sender@mail.com"   #MK: sender email address
        emailPass = "*********"         #MK: password for sender email
        smtpAddr = "smtp.mail.com"      #MK: smtp server. in case of gmail, smtp.gmail.com
        smtpPort = 465
        emailMsg = MIMEMultipart()
        #MK: isinstance는 Variable Type을 파악하기 위해 사용
        if isinstance(sentTo, list):
            emailMsg["To"] = ", ".join(sentTo)
            #MK: STR.join(list): List에 있는 String 사이에 STR을 추가하여서 한 String으로 변경함
            #MK: """ STRING """ (3개)를 사용하면 새로운 줄도 STRING에 포함
            #MK: " STRING %s " % STR_VARIABLE을 사용하면 %s에 STR_VARIABLE이 들어감
        elif isinstance(sentTo, str):
            emailMsg["To"] = sentTo
        else:
            print("MK:First parameter is unknown type")
            return
        emailMsg["From"] = emailAddr
        emailMsg["Subject"] = subject
        content = content + "\n\n by MKBlog"
        tmp = MIMEText(content, "plain")
        emailMsg.attach(tmp)
        try:
            emailServer = smtplib.SMTP_SSL(smtpAddr, smtpPort)
            emailServer.ehlo()
            emailServer.login(emailAddr, emailPass)
            emailServer.sendmail(emailAddr, sentTo, emailMsg.as_string())
            emailServer.close()
            print("MK: Email is sent")
        except:
            print("Error: Could not send email")

if __name__ == "__main__":
    #MK: List or String, Subject String, Contect String
    sendMail=mkSendEmail(["test@mail.com", "test1@mail.com"], "Test Subject", "Test Content")

설명

  • 출처 1에서 나온 내용을 대부분 그대로 사용하였다.
  • “””STRING”””:  STRING에 새로운 줄 바꿈 등을 모두 포함한다. 보통 “\n”과 같은 부분을 추가해야 줄 바꿈이 적용되지만 “”” (3개)를 사용하면 필요하지 않다.
  • STR.join(LIST): LIST 사이에 STR을 추가하여 새로운 String을 생성한다. 만약 LIST를 STRING으로 변경하면 STRING의 Char 사이에 STR을 추가하여 새로운 String을 생성한다.
  • isinstance(VAR, list): VAR이 List이면 True 값을 리턴한다. list대신 str 등으로 변경 가능하다.

Github 주소: https://github.com/mkblog-cokr/pythonPractice

출처

  1. https://stackabuse.com/how-to-send-emails-with-gmail-using-python/
  2. https://docs.python.org/2/library/email-examples.html#id5

Leave a Comment