2017-04-20 195 views
0

發送郵件時,我對電子郵件中的內容類型感到困惑。我知道附件文件類型與內容類型有關。出於某種原因,我可以' t使用「application/octet-stream」。 例如,我想發送「pdf」附件。發送郵件時應選擇哪種內容類型(SMTP)

msg = MIMEMultipart() 
msg['From'] = "" 
msg['Subject'] = "" 
part = MIMEApplication(open(attachment_path, 'rb').read()) 
filetype = os.path.splitext(attachment_path)[-1][1:] 
newfilename = 'resume' + '.' + filetype 
if filetype=="pdf": 
    part["Content-Type"] ="application/pdf" 
elif filetype=="doc" or filetype=="docx": 
    part['Content-Type']="application/msword" 
else: 
    pass 
part.add_header('Content-Disposition', 'attachment', filename=newfilename) 
msg.attach(part) 

的信息來源是如下:

enter image description here

兩個內容類型:SMTP頭信息來源和附接頭? 他們會互相影響嗎? 而「docx」---可以使用application/msword? 請原諒我問這個愚蠢的問題! 感謝您的幫助!

回答

0

的SMTP頭很可能會像:

Content-Type: multipart/related; boundary="----=_NextPart_01D2B948.420196F0" 

和消息的每一部分都會有自己的上下文類型,像這樣:

------=_NextPart_01D2B948.420196F0 
Content-Location: file:///C:/18F2A310/testpage.htm 
Content-Transfer-Encoding: quoted-printable 
Content-Type: text/html; charset="us-ascii" 

的頭不相互影響。如果您打開一個eml消息或將一個Outlook消息保存爲MHT格式,則會爲MIME代碼詳細信息生成種子。

而從這個鏈接,您可以查找應用程序上下文類型支持:Media Types

+0

非常感謝你much.May我問你一個問題嗎?一件附件可以有兩種內容類型嗎?我只是像這樣設置了部分['Content-Type'] =「」。 – Bella

+0

我沒有嘗試直接操作MIME文件來設置兩種內容類型,但我確信在smtplib中你不能這樣做。 – felixc

+0

對不起! smtplib可以做到這一點!只要寫這個:part.add_headers(「Content-Type」,「application/pdf」); part.add_headers(「Content-Type」,「application/msword」);它將有兩種內容類型。 – Bella