2

こんにちは、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 タイプを手動で指定できますか?

編集: 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...

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÷—¶!’õÞý Ö...
4

1 に答える 1

1

つまり、Google AppEngine 電子メールを使用してカスタム MIME タイプを指定することはできません。

Google 経由で Google AppEngine 経由で電子メールを送信するには、提供されている Mail API を使用する必要があります。.docx がコンテンツ タイプを使用している理由は、httpsapplication/msword : //cloud.google.com/appengine/docs/standard/python/mail/mail-with-headers-attachments で確認できます。これを解決するために、Issue Tracker に問題を送信することをお勧めします。

Amazon の SESSendGridなどのサード パーティの電子メール プロバイダーを検討する価値があるかもしれません。私は個人的に Amazon の SES を使用して、GAE の Mail API の機能不足や制限の多くを回避してきました (ただし、Google はこの API を常に改善しています)。

boto ライブラリを使用して AWS SES と通信し、RAW E メール メッセージを送信できます。(電子メールの作成方法の例については、この質問を参照してください。目的に合わせて小さな変更が必要になる場合があります)

于 2013-04-03T21:39:49.870 に答える