2021. 1. 19. 12:04ㆍPython
이번에는 파이썬을 활용하여 이메일을 보내보는 코드를 작성해 보겠습니다.
먼저 파이썬에서 이메일을 보낼때 필요한 라이브러리에 대해 알아보겠습니다.
라이브러리를 아래와 같이 작성하고 하나하나 설명해 보겠습니다.
'smtplib'는 파이썬에 내장되어있는 라이브러리로 따로 설치할 필요가 없습니다. smtp는 메일을 쉽게 보내주는 라이브러리로 간단하게 메일을 보내는 약속입니다.
그리고 'email.message'에서 'EmailMessage'만 사용할 것인데 'EmailMessage'는 우리가 작성하고자 하는 이메일을 mine형태로 변환해 주는것을 의미합니다.
그리고 'imghdr'은 이미지의 유형을 판단해주는 역할을 하는데 이번 메일에서 이미지를 첨부하여 보낼예정이기 때문에 필요한 라이브러리입니다.
're'는 파이썬의 정규표현식 기능 사용 라이브러리인데 이메일 계정의 유효성을 확인하기 위한 라이브러리입니다.
이제 SMTP를 사용하여 서버에 연결하겠습니다.
저는 google계정을 이용하여 이메일을 보내는 코드를 작성해보려 합니다.
SMTP는 서버에 연결해 주는 함수로 서버주소, 포트번호 등이 필요합니다.
위와 같이 작성하고 "465"는 gmail에서 지정한 포트번호 입니다.
그리고, 이번에는 이메일 주소의 유효성 검사를 실시하겠습니다.
위와 같은 코드를 작성하였습니다.
sendEmail()함수를 작성해 (addr)에 들어갈 이메일 주소에 대해 , reg변수를 만들어 유효성을 확인합니다.
그리고 (addr)을 불리안 함수를 통해 유효성에 적합하다면 메일을 보내주고, 정상적으로 출력되었다는 내용을 출력해주는 코드를 작성해주었습니다.
작성한 유효성 코드의 내용은,
# 소문자 a-z 대문자 A-Z :2~3번까지 반복될수 있도록 작성
그리고 smtp.semd_message(message)는 메일을 보내주는 함수로서, 유효성이 확인된다면 메일을 보내주는 코드입니다.
그리고 유효성 검사에서 실패한다면, 유효한 이메일 주소가 아니라는 내용을 출력해주는 코드를 작성하였습니다.
이제 메일의 제목과 내용에 대한 코드를 작성해 보겠습니다.
message의 변수를 만들고 EmailMEssage()을 사용해 mine형태로 변환해 주었습니다.
그리고 message.set_content()에 본문에 들어갈 내용을 작성해 주었습니다.
그 다음, 리스트를 활용해 보내는 사람, 받는사람, 제목을 작성하였습니다 이부분은 header부분의 값이므로 본문 작성과 조금 다른 방법으로 코드를 작성해주어야 합니다.
그리고 이번에는 사진을 첨부하는 코드를 작성해 보려 합니다.
먼저 원하는 사진을 PYTHONWORKSPACE폴더에 넣은 후에 작업을 실시해야 합니다.
저는 08.jpg파일을 폴더에 넣은후 파일을 열고 image라는 변수라고 입력하였습니다.
그리고 image_file에다가 image를 읽어서 저장하였습니다.
그리고 image_type이라는 변수에 imghdr.what(파일명,타입)을 작성해주어서 메일에 첨부할 사진의 서브타입을 만들었습니다.
마지막으로 message.add_attachment()함수를 사용하여 이미지파일, 메인타입,서브타입을 작성하여 메일에 첨부하였습니다.
이제, 모든 설정이 끝났으니 메일을 발송하는 코드를 작성해 보겠습니다.
smtp를 이용하여, 아까 설정한 SMTP_SERVER와 SMTP_PORT를 입력해 줍니다.
그리고 smtp.login을 사용하여 gmail에 로그인해 줍니다. 아이디와 비밀번호를 작성해야 하는데 비밀번호는 필자의 개인정보이기 때문에 블락처리 하였습니다.
그리고 sendEmail()에서 아까 작성한 코드로,
내 이메일 주소를 작성하여 유효성 검사를 하고,
이메일을 발송시켜 줍니다.
smtp.quit()로 서버와의 연결을 끊어주며 코드를 종료합니다.
실행시켜보면,
아래와 같은 결과가 출력됩니다
그리고 이메일을 확인해보면,
위와 같이,
제목, 본문, 보내는사람, 받는사람 사진 등이 전부 다 잘 첨부된것을 확인할 수 있습니다.
이렇게 파이썬을 사용하여 이메일을 보내는 코드를 작성해 보았습니다.
'Python' 카테고리의 다른 글
딥러닝 vs 머신러닝 (0) | 2021.09.26 |
---|---|
[Python]국내 주식 불러오기 (0) | 2021.02.01 |
[Python]번역프로그램 만들기 (0) | 2021.01.18 |
[Python]날씨 정보 받아오기 (0) | 2021.01.17 |
[Python]실시간검색어 불러오기 (0) | 2021.01.15 |