[Python] 파이썬으로 아웃룩(Outlook) 이메일 보내기

1. 개요

파이썬을 이용하여 아웃룩(Outlook)으로 이메일을 발송합니다.

win32com 모듈로 Outlook Object Model을 이용합니다.

 

 

Outlook MailItem Object

new_Mail이라는 변수에 새로운 이메일을 오브젝트 형태로 불러옵니다.

이 오브젝트를 이용하여 메일을 작성하고 보냅니다.

new_Mail = win32com.client.Dispatch("Outlook.Application").CreateItem(0)

사용하는 프로퍼티

  • new_Mail.To : 메일 수신자
  • new_Mail.CC : 참조
  • new_Mail.Subject : 메일 제목
  • new_Mail.HTMLBody : 메일 내용(HTML 형태)
  • new_Mail.Attachment : 첨부 파일 -> Attachment 또한 Object라, 여기서는 new_Mail.Attachment.Add(파일경로) 형태의 첨부 파일 추가 메서드 사용 

사용하는 메서드

  • new_Mail.Send() : 메일 발송하기

 

※ MailItem의 모든 프로퍼티와 메서드는 아래 링크에서 확인 가능합니다.

docs.microsoft.com/ko-kr/dotnet/api/microsoft.office.interop.outlook._mailitem?view=outlook-pia

 

 

2. 예제 코드

outlook.py

# -*- coding: utf-8 -*-
import win32com.client

def send_mail(to,subject,content, atch=[]):
    # Outlook Object Model 불러오기
    new_Mail = win32com.client.Dispatch("Outlook.Application").CreateItem(0)
    
    # 메일 수신자
    new_Mail.To = to
    # 메일 참조
    # new_Mail.CC = "mail-add-for-cc@testadd.com"    
    # 메일 제목
    new_Mail.Subject = subject
    # 메일 내용
    new_Mail.HTMLBody = content

    # 첨부파일 추가
    if atch:
        for file in atch:
            new_Mail.Attachments.Add(file)

    # 메일 발송
    new_Mail.Send()


if __name__ == "__main__":

    to = "mail-add-for-to@testadd.com"
    subject = "test"
    content = """
    <h3>직장인 최고의 일상 루틴, &#8216;출근과 퇴근&#8217;</h3>
    <blockquote><p>아니, 작가님은 참 대단하세요. 직장을 다니면서 어떻게 그렇게 글을 쓰세요?</p></blockquote>
    <p>단언컨대, 나는 참 게으른 사람이다. 시간이 많이 주어질 때 오히려 글쓰기를 하지 않고 늘어져 있다. 서 있으면 앉고 싶고, 앉으면 눕고 싶고, 누우면 자고 싶은 본능을 충실히 따른다. 그래서 나에게 대단하다는 말을 건네는 분들에겐 일종의 미안함을 느낀다.</p>
    출처 : https://ppss.kr/archives/228582?fbclid=IwAR3Jk7GFK_-Urf3FQW6W_QY1Ht8LEv5kn5gzto-nh3RXKmnB9IZDiK8LfDg
    """

    send_mail(to, subject, content)

위의 코드를 실행하면, 아래와 같은 이메일이 발송됩니다.

 

 

 

3. 참고 사항

 - 아웃룩은 메일 내용이 기본적으로 HTML로 작성된다. 따라서 원하는 대로 HTML을 이용하여 메일 내용을 작성하면 된다.

 

 - 느낀점 : 이게 클래스로 만들어서 사용할 수 있으면 편할텐데, 해당 오브젝트를 상속받아 클래스로 사용하는 데에는 실패하였다. 현재로서는 파일 하나로 만들어 놓고 모듈로 이용하는 게 그나마 편한 것 같다. 다시 말해서 위의 코드가 있는 파일을 outlook.py라고 한다면, 다른 파일에서 해당 함수를 불러와서 사용하는 방식으로 이용한다.

 

main.py

# -*- coding: utf-8 -*-
from outlook import send_mail
from datetime import datetime

to = "test_add@fakeweb.com"
subject = datetime.today().strftime("%y.%m.%d")
content = """
테스트 이메일
"""

send_mail(to, subject, content)

 

- 다음 시간에는 SAP 이용해서 다운받아서 메일 보내는 것까지 한방에 다루려고 한다.

- 그 다음에는 SAP로 다운받은 엑셀 파일을 처리하여 메일로 보내는 것까지 한방에 다루고 싶다.

댓글

Designed by JB FACTORY