본문 바로가기

Python

python으로 메일발송 프로그램 만들어 보기

0. 먼얘기랴~!

이 글에는 python 으로 네이버를 메일서버로 하여 이메일 발송프로그램을 만들어 보겠습니다. 

 

1. 폴더 만들고 가상환경 활성화

지난 시간에 python으로 가상환경 만드는 부분 해보셨죠? 기억나시죠?

2022.12.04 - [Python] - python 설치 및 기본 실행

 

python 설치 및 기본 실행

0. 먼얘기랴~! 이 글에는 python 3.9버전을 설치해보고, 기본 패키지관리자 pip를 설치해보고, 실행해봅니다. 1. Python이 먼가요? python은 사실 만들어 진지는 상당히 오래된 개발언어로 알고 있습니다.

easyaws.tistory.com

 

 

같은 방법으로 폴더를 하나 만들어 이동한 후에 가상환경을 활성화해봅니다.

kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws (master)
$ mkdir python-naver-email

kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws (master)
$ cd python-naver-email/

kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws/python-naver-email (master)
$ /c/Python39/python -m venv venv

kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws/python-naver-email (master)
$ source venv/Scripts/activate
(venv) 
kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws/python-naver-email (master)
$ touch send_email.py
(venv) 
kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws/python-naver-email (master)
$

$ mkdir python-naver-email

=> 폴더만들고

$ cd python-naver-email/

=> 이동하고

$ /c/Python39/python -m venv venv

=> 3.9버전 가상환경만들고

$ source venv/Scripts/activate
(venv) 

=> 가상환경 활성화하고


$ touch send_email.py
(venv) 
$

=> 파일 하나 만들고.

 

2. 메일 발송 프로그램 코딩...

 

send_email.py파일을 아래처럼 코딩합니다.

# send_email.py

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
import os, json

# 시스템 환경변수 값
# 변수명 : naver_account
# 값 : {"account":"test@naver.com", "pwd":"test", "name":"홍길동", "to":"receive@nate.com"})
ENV_NAVER = json.loads(os.environ.get('naver_account', '{}'))

# to: 받는 사람 배열
# subject: 메일 제목
# body: 메일 본문
def sendNaver(to=[], subject='제목 테스트 메일 발송', body='본문 테스트 메일 메시지'):
    try:

        # 네이버 접속계정 정보
        send_account    = ENV_NAVER['account']
        send_pwd        = ENV_NAVER['pwd']
        send_name       = ENV_NAVER['name']

        smtp = smtplib.SMTP_SSL('smtp.naver.com', 465)
        smtp.login(send_account, send_pwd)
        
        msg = MIMEMultipart('alternative')

        msg['Subject'] = subject
        msg['From'] = formataddr((str(Header(send_name, 'utf-8')), send_account))
        msg['To'] = ', '.join(to)

        msg.attach(MIMEText(body, 'html'))
        smtp.sendmail(send_account, to, msg.as_string())

        # 세션 종료
        smtp.quit()
        print("OK")
        return "OK"
    except Exception as ex: # 에러 종류
        print('이메일 발송 에러', ex)
        return ex

if __name__ == "__main__":
    sendNaver(to=[ENV_NAVER['to']])

ENV_NAVER라는 값을 환경변수로 셋팅하고 시작합니다.

https://salguworld.tistory.com/133

 

Python 시스템 환경변수 가져오기(os.environ)

환경변수 환경변수란 운영체제에 로그인한 사용자가 어떤 위치에서든 확인할 수 있는 값을 의미합니다. 예를 들어 A, B, C 3개의 프로그램이 실행되고 있습니다. 여기서 A, B, C 모두 한 위치에 한

salguworld.tistory.com

다음으로

sendNaver라는 함수는 3개의 파라미터를 받아서 메일을 발송해주는 함수입니다.

하단에 호출시 to 부분만 받을사람 이메일 주소를 입력해서 실행해주면 됩니다. 배열이므로 여러개를 ,로 구분하여 추가입력가능하겠죠.

프로그램은 단순하고, 주석을 참고하시면 될 것 ㄱ타고요.

중앙부분에 네이버접속계정이라고 되어있는 부분을 자신의 접속정보로 수정하시면 됩니다.

그럼 실행해보겠습니다.

 

3. 실행

(venv)
kangt@DESKTOP-TBLMS2U MINGW64 /e/Project/easyaws/python-naver-email (master)
$ python send_email.py
OK

발송이 되었다고 나오네요.

그럼 가서 실제로 발송되었는지 확인해볼게요.

1. 제목 부분 잘 되었고요.

2. 보낸 사람 "이름" 잘 나왔고요.

3. 메일 내용도 잘 들어왔습니다.

 

다음에 제대로 메일을 보낼때는 제목과 내용을 실제 보낼내용으로 바꾸어서 보내면 되겠죠?

간단합니다. 머 별거 없어요. python도 너무 간단하죠. ㅎ

다만, pip로 해서 패키지를 설치하고 설치한 패키지를 다른 시스템에서도 쉽게 설치하는 부분에 대한 이야기가 아직 없는데요. 다음시간에 나올겁니다. 기대해주세요.

 

참고로!

Gmail도 가능합니다. 다만, Gmail은 보안관련하여 개인정보설정부분에서 풀어줘야하는 부분이 좀 있습니다.

 

 

 

 

자 그럼 다음시간에는

python으로 크롤링하는 프로그램을 간단히 만들어 보겠습니다.


이제 거의 다 왔습니다. 급하게 생각치마시고, 따라만 오세요.~~~!

 

 

python으로 메일발송 프로그램 만들어 보기 대충 버젼

1. python venv로 가상환경을 하나 만들어서 활성화 시킵니다.

2. 네이버 smtp 서버로 설정을 해서 보내는 사람 인증정보를 입력합니다.

3. 받는 사람 정보를 함수 파라미터에 넣어서 실행시킵니다.

4. 너무쉽다. 이래도 되나 싶네요. 다음시간에 봐유~

 

소스는 아래 Git에 계속 Update중입니다.

https://github.com/sjworldacademy/easyaws

 

아휴 이거 머 별거아녀~ 머 이까이꺼 머 대충 머. 

 

주의!

내용상에 잘못된 정보도 있을 수 있습니다. 내가 아는대로 적는거라.

그리고, 심한 사투리와 반말이 무자비하게 섞여있으니, 임산부 및 노약자는 유의하시기 바랍니다. 알겄쥬?

728x90
반응형