Gmail自動送信プログラムをEXE化した場合×
<質問>
下記のように、PythonでGmail自動送信プログラムを「添付ファイル無し」と「添付ファイル有り」の2つの場合で連続送信可能なように作成しました。
下記ソースプログラムをEXE化した場合、「添付ファイル有り」のプログラムが実行(自動送信)されませんでした。しかし「添付ファイル無し」のプログラムは正常に実行(自動送信)されました。
なお、下記ソースプログラム(.py)をそのままVisual Studio Codeで実行した場合は、「添付ファイル無し」と「添付ファイル有り」の2つの場合で正常に連続送信できました。
なぜ、EXE化した場合だけ「添付ファイル有り」のプログラムが実行(自動送信)されないのか?わかりません。どなたかご教示していただけないでしょうか?宜しくお願いします。
<Pythonソースプログラム>
#「添付ファイル無し」
import datetime
import smtplib
import ssl
from email.mime.text import MIMEText
import sys, codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
gmail_account = "xxx@gmail.com"
gmail_password = "xxx"
send_name = "テスト"
mail_to = "xxx@gmail.com"
today_date = datetime.date.today()
delivery_date = today_date + datetime.timedelta(days=7)
# print(today_date,delivery_date)
subject = "{0}様、{1}分の発注書をお送りします。".format(send_name,today_date)
body = "表題の発注書をお送りいたします。<br>添付ファイルをご確認ください。<br>本発注の納期は{0}となります。<br><br>xxxxxxxxxx".format(delivery_date)
# print(subject)
msg = MIMEText(body, "html")
# print(msg)
msg["Subject"] = subject
msg["To"] = mail_to
msg["From"] = gmail_account
# print(msg)
server = smtplib.SMTP_SSL("smtp.gmail.com", 465,context=ssl.create_default_context())
server.login(gmail_account, gmail_password)
server.send_message(msg)
server.close()
# print('送信完了')
#「添付ファイル有り」
#添付資料付きGmail送信
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
subject = "{0}様、{1}分の発注書をお送りします。".format(send_name,today_date)
body = "表題の発注書をお送りいたします。<br>添付ファイルをご確認ください。<br>本発注の納期は{0}となります。<br><br>□xxxxxxxxxx□".format(delivery_date)
msg = MIMEMultipart()
msg['Subject'] = subject
msg['To'] = mail_to
msg['From'] = gmail_account
msg_body = MIMEText(body, "html")
msg.attach(msg_body)
filename = "xxxxxxxxxx.pdf"
file = open(filename, "rb")
attachment_file = MIMEBase('application', 'pdf')
attachment_file.set_payload((file).read())
file.close()
encoders.encode_base64(attachment_file)
attachment_file.add_header('Content-Disposition', "attachment", filename=filename)
msg.attach(attachment_file)
server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=ssl.create_default_context())
server.login(gmail_account, gmail_password)
server.send_message(msg)
server.close()
# print('送信完了')
お礼
ありがとうございました。