1

以下のコードで何が問題になったのかを理解するのに苦労しています。HTMLメールを送信しようとしています。

NOW = datetime.datetime.now()

 def sendEmail(msg):
    global NOW
    global SENDER
    global EMAILTARGET
    today = "%s/%s/%s" % (NOW.month,NOW.day,NOW.year)
    # Create message container - the correct MIME type is multipart/alternative.
    msg = MIMEMultipart('alternative')
    msg['Subject'] = "SAR Data Report - %s" % today
    msg['From'] = SENDER
    msg['To'] = EMAILTARGET
    chunk = MIMEText(msg, 'html')
    msg.attach(chunk)
    s = smtplib.SMTP('localhost')
    s.sendmail(SENDER, EMAILTARGET, msg.as_string())
    s.quit()

上記のコードでは、次のエラーが表示されます。

Traceback (most recent call last):
 File "./html_mail.py", line 295, in <module>
 sendEmail(html)
 File "./html_mail.py", line 245, in sendEmail
 chunk = MIMEText(msg, 'html')
 File "/usr/lib/python2.7/email/mime/text.py", line 30, in __init__
  self.set_payload(_text, _charset)
 File "/usr/lib/python2.7/email/message.py", line 226, in set_payload
  self.set_charset(charset)
 File "/usr/lib/python2.7/email/message.py", line 268, in set_charset
  cte(self)
 File "/usr/lib/python2.7/email/encoders.py", line 73, in encode_7or8bit
  orig.encode('ascii')
  AttributeError: MIMEMultipart instance has no attribute 'encode'
4

2 に答える 2

4

コード内のエラーは、関数のパラメータとしてmsgを使用し、MIME メッセージ コンテナ (両方ともmsg )と衝突することです。

あなたがする必要があるのは、 in-parameter の名前をhtmlのような別のものに変更することです:

def sendEmail(html):
...
chunk = MIMEText(html, 'html')
...
于 2012-09-20T23:34:30.340 に答える
0

オブジェクトでmsgあるを、文字列を期待するイニシャライザに渡しています。添付しようとしているメッセージではなく、添付したい HTML を含む文字列を渡す必要があります。MIMEMultipartMIMEText

于 2012-09-20T23:20:50.070 に答える