2012-09-20 4 views
1

아래 코드에 무엇이 잘못되었는지 알아 내려고 애 쓰고 있습니다. html 메일을 보내려고합니다.python html 메일 오류

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

코드의 오류는 함수에의 파라미터로 MSG을 사용했는데 그것은 당신의 MIME 메시지 용기 (모두 이름 MSG)와 충돌한다는 것입니다. 당신은 SMTP 모든 번거 로움을 피하려면 내가 이메일 전송을 추천 할 것입니다

def sendEmail(html): 
... 
chunk = MIMEText(html, 'html') 
... 
+0

: 당신이해야 할 일은

HTML처럼, 뭔가 다른 인 - 매개 변수의 이름을 변경하는 것입니다 [AlphaMail] (http://comfirm.se) 또는 [SendGrid] (http://sendgrid.com)와 같은 서비스. –

0

당신은 msg을 전달하고, 문자열을 기대 MIMEText 초기화로하는 MIMEMultipart 객체입니다

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

위의 코드

는 나에게 다음과 같은 오류를 제공합니다. 첨부하려는 HTML이 포함 된 문자열을 전달해야하며 첨부하려는 메시지는 전달하면 안됩니다.