python - 发送自定义 Mime 类型 Google App Engine 电子邮件

标签 python google-app-engine smtp mime-types smtplib

您好,我刚刚发现我无法使用 smtplib 从 GAE 发送电子邮件,但我需要指定自定义 MIME 类型,如下所示:

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 损坏。

我可以使用 google 的邮件 api 手动指定 mime 类型吗?

编辑:更多关于我在通过邮件 api 发送 docx 时遇到的问题:

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...

Google 邮件 API 发送相同的文件如下:

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

PK�����!�‚VIŸ��È�����[Content_Types].xmlÅ–KOÃ0„ïHü‡ÈW”¸p@5íÇ(â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÷—¶!’õÞý Ö...

最佳答案

简而言之,您不能使用 Google AppEngine 电子邮件指定自定义 MIME 类型。

为了通过 Google AppEngine 发送电子邮件,您需要使用提供的 Mail API。您可以在此处查看为什么 .docx 使用内容类型 application/msword:https://cloud.google.com/appengine/docs/standard/python/mail/mail-with-headers-attachments .您可能希望向问题跟踪器提交问题以解决此问题。

可能值得查看第 3 方电子邮件提供商,例如 Amazon's SESSendGrid .我个人一直在使用 Amazon 的 SES 来解决 GAE 的 Mail API 中的许多功能不足和限制(尽管 Google 正在不断改进此 API)。

您可以使用 boto library与 AWS SES 通信并发送 RAW e-mail messages . (查看 this question 以获取有关如何创建电子邮件的示例,可能需要根据您的目的进行小的修改)

关于python - 发送自定义 Mime 类型 Google App Engine 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776136/

相关文章:

c# - 邮件消息的“收件人”、“抄送”、“密件抄送”允许为 null (system.net.mail.mailmessage)

Python查找两个列表的最小值和最大值

python:如何从一天内的时间步中获取最大聚合值?

python - GAE 中可以有共享的 python 库吗?

python - 在 python 中为应用程序引擎生成 json

java - 解释套接字响应的好方法

ruby-on-rails - Rails ActionMailer 中的 Net::SMTPAuthenticationError 502 5.5.2

python - BaseSpider 和 CrawlSpider 在一起

python - 未知命令 : shell_plus and --settings

python - 从 Google App Engine 访问 Xero