반응형
대부분 프로그래밍에서는 메일 전달과 관련된 기본 라이브러리 및 예제 코드를 제공하고 있다.
오늘은 Python 부분에 대해서 메일 전송 방안에 대해 정리해 보고자 한다.
여기에서는 기본 라이브러리를 활용한 방안에 대해서 정리해 보도록 하겠다.
MailSender 함수 만들기
메일에 내용이나 본문이 변경될 수 있기 때문에 아래와 같이 함수를 선언하여 사용하는 것을 추천한다.
아래 코드에서 유심있게 봐야하는 부분은 보내야 하는 대상 즉 To가 여러명일 경우,
sendmail 에서의 To 데이터와 Message["To"]에 들어가는 데이터 형식이 다르다는 것이다.
smtplib 의 sendmail 에서는 []를 이용한 리스트 형태로 들어가야 한다.
하지만 message["To"] 에서는 string으로 들어가야 하기 때문에 리스트를 문자열로 변환하는 작업을 진행해준다.
import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
server_addr = "input your smtp server address"
login_user = ""my@asecurity.dev"
login_pass = "my password"
def MailSender(in_subject, in_text, in_from, in_to):
recipients = [in_to] # 문자열을 리스트로 변환
message = MIMEMultipart("alternative")
message["Subject"] = in_subject
message["From"] = in_from
message["To"] = in_to
text = """\
안녕하세요,
{text}
""".format(text=in_text)
# write the HTML part
html = """\
<html>
<body>
<p><{text}</p>
</body>
</html>
""".format(text=in_text)
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)
try:
s = smtplib.SMTP(host=server_addr, port=25)
s.connect(server_addr, 25)
s.ehlo()
s.starttls()
s.ehlo()
s.login(login_user, login_pass)
s.sendmail(in_from, recipients, message.as_string())
s.quit()
print("Successfully sent the mail.")
except Exception as mail_sender_e:
print("Failed to send the mail..", mail_sender_e)
위 함수를 이용해서 메일을 보낸다면 다음과 같이 사용이 가능하다.
MailSender('test email 입니다.', '본문 입니다.', 'allmnet@asecurity.dev', 'test@gmail.com, test@naver.com')
반응형
'Python' 카테고리의 다른 글
Python - 함수 주석 설명 팁 (0) | 2024.03.03 |
---|---|
Python - Workday 공휴일, 날짜 인지 확인 (0) | 2024.03.03 |
Python - 특정 문자열(str) 포함 유무(contains) 확인 방법 (0) | 2024.03.02 |
Python - 도메인, 서브도메인, URL 구분 방법 tldextract (0) | 2024.03.02 |
Python - 지역 변수와 전역 변수 그리고 global (0) | 2024.03.02 |