출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] 'smtplib' 태그의 글 목록 :: 하나둘셋넷
728x90

Python_기법] 이메일

 

라이브러리 import

 

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

 

파일

 

def send_email(subject, body, recipient, files):
    sender = '메일@메일.com'
    password = '앱 비밀번호'

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(sender, password)

    message = MIMEMultipart()
    message['From'] = sender
    message['To'] = recipient
    message['Subject'] = subject
    message.attach(MIMEText(body, 'plain'))

    for file in files: # files의 항목들을 연다.
        attachment = open(file, 'rb')
        part = MIMEBase('application', 'octet-stream') # MIMEBase 타입을 설정한다. 'application', 'octet-stream' 이것은 일반적인 바이너리 파일을 나타내는 MIME, 다양한 유형의 파일 첨부 가능
        part.set_payload((attachment).read())
        encoders.encode_base64(part) # ASCII 문자열로 변환하여 이메일을 통한 전송 중에 데이터가 손상되지 않도록 한다.
        part.add_header('Content-Disposition', "attachment; filename= %s" % file)
        message.attach(part)

    # 이메일 발송
    server.send_message(message)
    server.quit()

 

함수 사용

 

if st.button('Sending email'): # streamlit 전송 버튼
    send_email(
        subject = '제목',
        body = 'Check This File',
        recipient = '메일@메일.com',
        files = ['./under.csv', './over.csv']
        )
    st.write('Complete')
728x90

+ Recent posts