fromemail.messageimportEmailMessageimportsmtplibmsg=EmailMessage()msg['Subject']='HTML 메일'msg['From']='sender@example.com'msg['To']='recipient@example.com'# 텍스트 대체 본문msg.set_content('HTML을 볼 수 없는 클라이언트용 텍스트')# HTML 본문html_content="""
<html>
<body>
<h1>안녕하세요!</h1>
<p>이것은 <strong>HTML</strong> 메일입니다.</p>
<ul>
<li>항목 1</li>
<li>항목 2</li>
</ul>
</body>
</html>
"""msg.add_alternative(html_content,subtype='html')withsmtplib.SMTP('smtp.example.com',587)asserver:server.starttls()server.login('user','password')server.send_message(msg)
fromemail.messageimportEmailMessageimportsmtplibimportmimetypesmsg=EmailMessage()msg['Subject']='첨부 파일 테스트'msg['From']='sender@example.com'msg['To']='recipient@example.com'msg.set_content('첨부 파일을 확인해주세요.')# 파일 첨부filename='report.pdf'withopen(filename,'rb')asf:file_data=f.read()file_type,encoding=mimetypes.guess_type(filename)iffile_typeisNone:file_type='application/octet-stream'maintype,subtype=file_type.split('/')msg.add_attachment(file_data,maintype=maintype,subtype=subtype,filename=filename)withsmtplib.SMTP('smtp.example.com',587)asserver:server.starttls()server.login('user','password')server.send_message(msg)
4. 여러 수신자
1
2
3
4
5
6
7
8
9
10
fromemail.messageimportEmailMessagemsg=EmailMessage()msg['Subject']='단체 메일'msg['From']='sender@example.com'msg['To']='user1@example.com, user2@example.com'msg['Cc']='cc@example.com'msg['Bcc']='bcc@example.com'# 숨은 참조msg.set_content('모두에게 보내는 메일입니다.')
importsmtplib# Gmail 사용 시:# 1. 2단계 인증 활성화# 2. 앱 비밀번호 생성 (보안 → 앱 비밀번호)GMAIL_USER='your-email@gmail.com'GMAIL_APP_PASSWORD='xxxx xxxx xxxx xxxx'# 앱 비밀번호# SSL 사용 (포트 465)withsmtplib.SMTP_SSL('smtp.gmail.com',465)asserver:server.login(GMAIL_USER,GMAIL_APP_PASSWORD)server.send_message(msg)# 또는 TLS 사용 (포트 587)withsmtplib.SMTP('smtp.gmail.com',587)asserver:server.ehlo()server.starttls()server.login(GMAIL_USER,GMAIL_APP_PASSWORD)server.send_message(msg)
importsmtplibfromemail.messageimportEmailMessagefromconcurrent.futuresimportThreadPoolExecutordefsend_email(recipient,subject,body):msg=EmailMessage()msg['Subject']=subjectmsg['From']='sender@example.com'msg['To']=recipientmsg.set_content(body)withsmtplib.SMTP_SSL('smtp.gmail.com',465)asserver:server.login('user','password')server.send_message(msg)returnf"Sent to {recipient}"recipients=['user1@example.com','user2@example.com','user3@example.com']withThreadPoolExecutor(max_workers=3)asexecutor:futures=[executor.submit(send_email,r,'제목','내용')forrinrecipients]forfutureinfutures:print(future.result())