2013-04-02 34 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

相关问题