1

リクエストを使用して添付ファイルとして送信しようとしているファイルで非 ASCII 文字を使用すると問題が発生します。

_send_output 関数の httplib モジュールで例外が発生します。この画像を参照してください:

ここに画像の説明を入力

ここに私のコードがあります:

response = requests.post(url="https://api.mailgun.net/v2/%s/messages" % utils.config.mailDomain,
                auth=("api", utils.config.mailApiKey),
                data={
                        "from" : me,
                        "to" : recepients,
                        "subject" : subject,
                        "html" if html else "text" : message
                    },
                files= [('attachment', open(f)) for f in attachments] if attachments and len(attachments) else []   


            )

問題は、ascii 以外のデータ (ヘブライ語) を含む files パラメータにあります。画像に見られる例外は次のとおりです。

UnicodeDecodeError: 'ascii' コーデックは位置 673 のバイト 0xd0 をデコードできません: 序数が範囲外です (128)

4

2 に答える 2

0

ファイルをバイナリ データとして開きたいため、encoding パラメータを使用してファイルを開かないようにしてください。open の呼び出しは のようになりますopen(f, 'rb')。リクエストのドキュメントでは、このような例を意図的に示しているだけであり、この動作についても文書化しています。

于 2014-06-19T00:14:30.413 に答える