Python初心者ですので、お手柔らかに教えてください。
Pythonでとったデータをエクセル加工して見やすくしたデータをメールの本文にいれてメールを自動送信するシステムを構築したいとおもっています。下記のようにエクセルファイルのデータ取得はできているようにみえるのですが、メール送信しようとするとエラーがでてしまいます。
こちらの解決方法をおしえてください。
【エラーメッセージ】
KeyError Traceback (most recent call last)
<ipython-input-58-363279538f4a> in <module>
48 """
49
---> 50 send_amazon_email (
51 mailto = "ktakatos@amazon.co.jp"
52 , title = "CPT Order checker"
<ipython-input-58-363279538f4a> in send_amazon_email(title, template, mailto, mailfrom, images, contents, server, port, uid, password)
37
38 except Exception as e:
---> 39 raise e
40
41 template = """
<ipython-input-58-363279538f4a> in send_amazon_email(title, template, mailto, mailfrom, images, contents, server, port, uid, password)
21
22 # Templateの{}部分を、contentsの内容で書き換え
---> 23 mail_body_html = template.format(**contents)
24
25 # msg オブジェクトにメール本文を添付
KeyError: 'df_data'
def send_email( title , template = "" , mailto = "Adress" , mailfrom = "Adress" , images=[] , contents = {} , server = "ballard.amazon.com" , port = 1587 , uid = User , password = mail_pw ): try: msg = MIMEMultipart() msg['From'] = mailfrom msg['To'] = mailto msg['Subject'] = title # Templateの{}部分を、contentsの内容で書き換え mail_body_html = template.format(**contents) # msg オブジェクトにメール本文を添付 msg.attach(MIMEText(mail_body_html, 'html')) # メールサーバーへ接続・送信 mail = smtplib.SMTP(server, port, timeout=20) mail.starttls() mail.login(uid, password) mail.sendmail(mailfrom, mailto.split(", "), msg.as_string()) mail.quit() return msg.as_string() except Exception as e: raise e template = """ 昨日のCPT後の処理残数です。 よろしくお願いいたします。 {df_data} """ send_amazon_email ( mailto = "Adress" , title = "CPT Order checker" , mailfrom = "Adress" , contents = {} , template = template)
あなたの回答
tips
プレビュー