0

私はpython GAEを使用しており、ユーザーがサーバーに投稿したファイルをメールで送信したいと考えています。

最初にファイルを BlobStore に保存し、次に Blobstore から取得し、メールで送信し、BlobStore から削除することで、それを行うことができました (と思います)。

BlobStoreを使わずにそれを行うことは可能ですか?

私はこのコードを持っています

up = self.request.POST.multi['upfile']
mail.send_mail(from_address, to_address, subject, body,
              attachments=[(up.filename, up.file.read())])

テキスト ファイルでは問題なく動作しますが、バイナリではコンテンツが減少します。たとえば、元の png ファイルの 16 進ダンプは次のとおりです。

        00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000  89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 .PNG........IHDR
000010  00 00 00 40 00 00 00 28 08 02 00 00 00 C1 AC 6B ...@...(.......k
000020  BE 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00 .....sRGB.......
000030  00 09 70 48 59 73 00 00 0B 13 00 00 0B 13 01 00 ..pHYs..........
000040  9A 9C 18 00 00 00 07 74 49 4D 45 07 DD 05 0F 11 .......tIME.....
000050  05 38 BA 66 BF EB 00 00 00 19 74 45 58 74 43 6F .8.f......tEXtCo
000060  6D 6D 65 6E 74 00 43 72 65 61 74 65 64 20 77 69 mment.Created wi
000070  74 68 20 47 49 4D 50 57 81 0E 17 00 00 00 1D 49 th GIMPW.......I
000080  44 41 54 58 C3 ED C1 01 01 00 00 00 82 20 FF AF DATX......... ..
000090  6E 48 40 01 00 00 00 00 00 00 F0 64 1E 28 00 01 nH@........d.(..
0000A0  D2 35 20 CA 00 00 00 00 49 45 4E 44 AE 42 60 82 .5 .....IEND.B`.

アップロード、メール、ダウンロードされたものの 16 進ダンプは次のとおりです。

        00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000  89 50 4E 47 0D 0A 1A 0D 0A 2D 2D 3D 3D 3D 3D 3D .PNG.....--=====
000010  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 30 36 38 30 38 34 ==========068084
000020  32 39 32 39 3D 3D 2D 2D 2D 2D 3D 3D 3D 3D 3D 3D 2929==----======
000030  3D 3D 3D 3D 3D 3D 3D 3D 3D 30 36 38 30 38 34 32 =========0680842
000040  39 32 39 3D 3D 2D 2D 929==--

私はPythonが初めてなので、基本的なことでさえ間違っているかもしれません。

バイナリの場合、 read() を使用してファイルを読み取るのは間違っていますか? (ファイルシステムで実行したときは問題ないように見えました) それとも、私のように GAE でバイナリ データを送信するのは間違っていますか? (必要に応じてバイト列ではありませんか?)

4

1 に答える 1

0

Google App Engine はファイル拡張子から MIME タイプを推測します。電子メールのヘッダーをチェックして、電子メールに正しい MIME タイプが指定されていることを確認し、適切にエンコードされていることを確認しましたか?

https://developers.google.com/appengine/docs/python/mail/attachments

于 2013-07-06T15:03:00.420 に答える