LoginSignup
2
4

More than 3 years have passed since last update.

Pythonでメール送信の時添付ファイルを複数添付して送る

Last updated at Posted at 2021-05-14

Pythonでメール送信の時添付ファイルを複数添付して送る

力技で解決

import os
import smtplib
import ssl
import sys
import glob
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 第1引数が送り先、第2が添付したいファイルが入っているフォルダ
def sendmail(sendto, attach):
    account = "XXX@co.jp"
    password = "XXX"

    # 送受信先
    to_email = sendto
    from_email = "from"

    # MIMEの作成 -メール本文の内容
    subject = "XXX"
    message = "XXX\n"
    msg = MIMEMultipart()
    msg["Subject"] = subject
    msg["To"] = to_email
    msg["From"] = from_email
    msg.attach(MIMEText(message))

    # ファイルを添付 引数で指定したフォルダのファイルを添付する
    for file in attach:
        fname = os.path.basename(file)
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(open(file, 'rb').read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment', filename=fname)
        msg.attach(part)

    # メール送信処理

    server = smtplib.SMTP_SSL("XXX", 465, context=ssl.create_default_context())
    server.login(account, password)
    server.send_message(msg)
    server.quit()

# PDFだけ送りたかったのでこの書式になった
# 尚、個人的な環境からiniからメールアドレスを抽出して送付する形となっている
sendfileXXX = glob.glob(r"D:\Users\XXX\Desktop\mail\XXX\*.pdf")
f = open(r"D:\Users\XXX\Desktop\mail\XXX\mail.ini", 'r')
sendtoXXX1 = f.read()
f.close()
sendmail(sendtoXXX1, sendfileXXX)

sys.exit()
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4