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()