2013-04-02 31 views
2

您好我剛剛發現我不能使用到的smtplib從GAE發送電子郵件,但我需要在指定自定義MIME類型:發送自定義MIME類型谷歌App Engine的電子郵件

part = MIMEBase('application', "vnd.openxmlformats-officedocument.wordprocessingml.document") 
part.set_payload(doc) 
Encoders.encode_base64(part) 
part.add_header('Content-Disposition', 'attachment; filename="%s"' % "ackReceived.docx") 
msg.attach(part) 

如果我嘗試以文檔化的方式使用api,那麼它會發送帶有'application/msword'的附件,導致我的docx被破壞。

我可以使用谷歌的郵件API手動指定MIME類型嗎?

編輯:一點關於我的臉,當我的docx通過郵件API發送的問題:

的smtplib發送這樣的附件:

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document 
MIME-Version: 1.0 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename="ackReceived.docx" 

UEsDBBQABgAIAAAAIQCCVgdJnwEAAMgIAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbMWWS0/DMBCE 
70j8h8hXlLhwQAg17YHHEZAo4mzsTWMRP2Qvj/571k1bIaiaiDbiEilZz3wzsSJnPP00TfYOIWpn 
S3ZajFgGVjql7bxkT7Pb/IJlEYVVonEWSraAyKaT46PxbOEhZqS2sWQ1or/kPMoajIiF82BpUrlg... 

谷歌郵件API發送相同的文件像這樣:

Content-Type: application/msword 
MIME-Version: 1.0 
Content-Disposition: attachment; filename="ackReceived.docx" 

PK�����!�‚VIŸ��È�����[Content_Types].xmlÅ–KOÃ0„ïHü‡ÈW」¸[email protected]íÇ(âlìMc?d/þ{ÖM[!¨šˆ6â)YÏ|3±"g<ý4Mö!jgKvZŒXV:¥í¼dO³Ûü‚e…U¢qJ¶€È¦「ã£ñlá!f¤¶±d5¢¿ä<ÊŒˆ…ó`iR¹`Òm˜s/䫘?ιtÁbŽÉƒMÆ×P‰·³›OzÜ&!9Ë®Úu U2á}£¥@ó4å[uÞÎè´IÜô|»"@w Þ­úÑ'_u)H¹\kíãÉ*Ó=½Ì d"à0dÇ?\P\9ùfQ쮶…çªJKØè「›NBŒ´K¦)6#´íÌqÑ@<|ŠÖ·'þYc}SU ±Oó¤-~i»i€Hñ†¨»rîŒð/ƒ¥øfÞ¤r­Ã!ö~cݬ(ÃÚ¹3B 
BA8=|‚Ö¸'ÿìßøi³éß÷äп7Ÿxâ¥!¬¬;C 」Ð^÷߉¥Í.$­|ÎG:yÃj¯¼¤Î©°‡€z÷—¶!’õÞý Ö... 

回答

1

簡而言之,您不能使用Google AppEngine電子郵件指定自定義MIME類型。

爲了通過Google AppEngine通過Google發送電子郵件,您需要使用提供的Mail API。你可以看到爲什麼.docx在這裏使用內容類型application/mswordhttps://cloud.google.com/appengine/docs/standard/python/mail/mail-with-headers-attachments。您可能想向問題跟蹤器提交問題以解決此問題。

這可能值得看看第三方電子郵件提供商,如Amazon's SESSendGrid。我個人一直在使用亞馬遜的SES來解決GAE Mail API中很多缺乏功能和限制的問題(儘管谷歌正在不斷改進這個API)。

您可以使用boto library與AWS SES通信併發送RAW e-mail messages。 (有關如何創建電子郵件的示例,請參見this question,可能需要進行小修改以滿足您的需要)

+0

我有點失望,必須在項目中包含額外的庫/服務,但我必須說它工作得很好,正如你所描述的那樣。謝謝您的幫助! – Awalias

+0

樂意提供幫助,您最終使用了哪些服務? – someone1

+0

我和boto一起發送了SES的原始郵件 – Awalias

相關問題