반응형
업무중에 만든 뉴스센싱 결과를 메일로 보내기 위해 파이썬 코드를 작성하였다. 단순 뉴스 수집을 위한 코드 였기 때문에 내부 메일 서버를 사용하지 않고 외부에 별도의 gmail 계정을 만들어 해당 계정으로 보내도록 만들었다.
간단하게 코드의 중요 부분들을 설명하자면 먼저 gmail의 smtp 서버 설정과 사용할 계정으로 로그인을 해줘야 한다.
구글의 경우 SMTP 서비스로 587번 포트를 이용하고 있다. 계정 로그인의 경우 패스워드 유출 위험이 있으므로 별도의 앱비밀번호를 만들어 넣는것을 추천한다. 앱 비밀번호 발급은 아래 포스팅을 참고하면 된다.
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login('YOUR_GMAIL_ADDRESS', 'YOUR_GOOGLE_KEY or PASSWORD')
그리고 보내는사람, 받는사람, 메일 주소를 설정해 준다.
to_list = ["YOUR_RECEIVE_LIST"]
msg['From'] = formataddr((str(Header('YOUR_SENDER_NAME', 'utf-8')), 'YOUR_GMAIL_ADDRESS'))
msg['To'] = ", ".join(to_list)
msg['Subject'] = 'YOUR_MAIL_TITLE'
첨부파일이 있다면 MIMEBase를 otect-stream 으로 설정을 해주고 첨부파일을 설정해 메시지에 첨부해준다.
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=name_tmp)
msg.attach(part)
마지막으로 메일을 보내고 연결을 종료한다. 코드의 경우에는 to_list에 받는 사람들을 설정해주고 한번에 발송을 해주었다.
s.sendmail(msg['From'], to_list, msg.as_string())
s.quit()
코드 전문은 아래와 같다. 메일 본문에 Dataframe 써서 표를 추가해야 하는 부분들이 있어서 html 본문이 존재한다.
def Send_Gmail():
msg = MIMEMultipart()
html = '''
<html>
<head>
</head>
<body>
"YOUR MESSAGE"
</body>
</html>
'''
part_html = MIMEText(html, 'html')
msg.attach(part_html)
name_tmp = "YOUR_ATTACH_FILE_NAME"
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login('YOUR_GMAIL_ADDRESS', 'YOUR_GOOGLE_KEY or PASSWORD')
to_list = ["YOUR_RECEIVE_LIST"]
msg['From'] = formataddr((str(Header('YOUR_SENDER_NAME', 'utf-8')), 'YOUR_GMAIL_ADDRESS'))
msg['To'] = ", ".join(to_list)
msg['Subject'] = 'YOUR_MAIL_TITLE'
attachment = open("YOUR_ATTACH_FILE_PATH", 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=name_tmp)
msg.attach(part)
s.sendmail(msg['From'], to_list, msg.as_string())
s.quit()
반응형
'Programming > 코딩 짤팁' 카테고리의 다른 글
Selenium 으로 티스토리 자동 로그인 (0) | 2022.01.06 |
---|---|
티스토리 API Access token 자동 발급 받기 업데이트 (4) | 2020.09.25 |
IP address / Domain / URL 구분하기 with 파이썬 (0) | 2020.09.25 |
파이썬 로그인 세션 유지하기 & 티스토리 API Access token 자동 발급 (8) | 2020.06.19 |
파이썬에서의 쉘 or 시스템 명령어 사용 (CMD / BASH...) (0) | 2020.05.28 |