2015-05-05 92 views
1

因此,我對python比較陌生,我試圖用附件發送電子郵件。我使用StackOverflow上這裏所描述的指南:How to send email attachments with PythonPython爲電子郵件附件名稱添加轉義字符

我用下面的代碼添加文件...

for f in glob.glob('./*/*'): 
    path = f.split('/') 

    with open(f, "rb") as fil: 
     msg.attach(MIMEApplication(
      fil.read(), 
      Content_Disposition = 'attachment; filename="' + path[-1] + '"' 
     )) 
server = smtplib.SMTP('smtp.gmail.com:587') 
server.ehlo() 
server.starttls() 
server.login(username,password) 
server.sendmail(emailFrom, emailTo, msg.as_string()) 
server.quit() 

當我收到的電子郵件,附件都被稱爲「NONAME」 。如果我在Gmail中打開原始電子郵件,則會顯示如下附件:

Content-Type: application/octet-stream; Content-Disposition="attachment; 
    filename=\"Daily Report.txt\"" 

爲什麼名稱未正確通過?

+0

丟失'filename ='中的雙引號。 – akshay

+0

已經嘗試過了......不幸的是,它不起作用。 –

+0

'msg'的類型是什麼? –

回答

2

由於我完全迷失的原因,下面的代碼工作。但似乎它也在做同樣的事情。任何人都知道發生了什麼事?

for f in glob.glob('./*/*'): 
    path = f.split('/') 

    with open(f, 'rb') as fil: 
     submsg = MIMEApplication(fil.read()) 
     submsg.add_header('Content-Disposition', 'attachment', filename = path[-1]) 

     msg.attach(submsg) 
+1

從[文檔](https://docs.python.org/2/library/email.mime.html#email .mime.base.MIMEBase),「MIMEBase類總是添加一個Content-Type頭(基於_maintype_,_subtype_和_params _),」他們爲什麼以這種方式設計API超出了我的想法,但是所有關鍵字參數都是針對任何MIME構造函數被添加到Content-Type。 –

相關問題