2011-11-25 49 views
3

我用python進行編程。我已經有一個函數發送帶有附件的郵件,但問題是它將該信息作爲附件。我需要它尊重作爲消息的消息和附件作爲附件。我已經調查過,並且發現與MIME Multipart「MIXED」有關,但是我不知道如何將其添加或更改爲我的實際功能。帶附件的Python Sendmail?

這裏是我使用的功能的Python代碼:

def enviarCorreo(fromaddr, toaddr, file): 
    msg = MIMEMultipart('mixed') 
    msg['From'] = fromaddr 
    msg['To'] = toaddr 
    msg['Subject'] = 'asunto' 
    #adjunto 
    adjunto = MIMEBase('application', "octet-stream") 
    adjunto.set_payload(open(file, "rb").read()) 
    encode_base64(adjunto) 
    adjunto.add_header('Content-Disposition', 'attachment; filename= "%s"' % file) 
    msg.attach(adjunto) 
    #enviar 
    server = smtplib.SMTP('localhost') 
    server.set_debuglevel(1) 
    server.sendmail(fromaddr, toaddr, msg.as_string()) 
    server.quit() 
    return 
+0

對不起,代碼的順序.....不知道爲什麼它出現這種方式! – mauguerra

+0

下次選擇您的代碼,然後使用帶有{}的按鈕進行格式化。 – mtrw

+0

你在哪裏添加實際的電子郵件? –

回答

3

你忘了文本附加爲msg.attach(MimeText用於(文本))

def enviarCorreo(fromaddr, toaddr, text, file): 
    msg = MIMEMultipart('mixed') 
    msg['From'] = fromaddr 
    msg['To'] = toaddr 
    msg['Subject'] = 'asunto' 

    #This is the part you had missed. 
    msg.attach(MIMEText(text)) 

    #adjunto 
    adjunto = MIMEBase('application', "octet-stream") 
    adjunto.set_payload(open(file,"rb").read()) 
    Encoders.encode_base64(adjunto) 
    adjunto.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file)) 
    msg.attach(adjunto) 

    server = smtplib.SMTP('localhost') 
    server.set_debuglevel(1) 
    server.sendmail(fromaddr, toaddr, msg.as_string()) 
    server.close() 

enviarCorreo("[email protected]", ["[email protected]"], "Hello World", ['/tmp/sample.png']) 

看看這對你的作品。

+0

THAANKS MAN !!! 它工作得很好 – mauguerra

+0

沒問題。很高興我能幫上忙。 – meson10

+0

如果我想添加純文本消息,代碼工作得很好,但是如果我想要消息爲HTML,應該更改哪些內容? 謝謝! – mauguerra

0

您可能會發現在email module examples答案(和其他有用的想法)。

一個示例似乎使用msg.preamble = "..."作爲主消息文本。

+0

outer.preamble不會顯示爲MIME感知的郵件閱讀器中的文本。該文件提到。例如AppleMail。 - 編輯 - 不適用於Google WebMail。 – meson10

+1

msg.preamble到底是什麼? 我試過使用它,但它停止發送電子郵件 – mauguerra

+0

http://docs.python.org/library/email.message.html#email.message.Message.preamble在這裏解釋。 – meson10