python requests を使用してリクエストを投稿しています。添付パラメータにASCII以外の文字が含まれている場合は例外が発生し、ASCIIデータのみが存在する場合はすべて問題ありません。
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', codecs.open(f.decode('utf8'))) for f in attachments] if attachments and len(attachments) else []
)
編集: ファイル名をutf8でデコードした後、例外は発生しませんが、ファイルは添付されていません。名前にASCII文字のみを含むファイルを添付してリクエストをデバッグしました。リクエストヘッダーのリクエストビルドは次のとおりです。
{'Content-Type': None, 'Content-Location': None, 'Content-Disposition': u'form-data; name="attachment"; filename="Hello.docx"'}
これは成功し、添付ファイル付きのメールが届きます。
ただし、ヘブライ文字を含むファイルを使用する場合、リクエストのヘッダーは次のようになります。
{'Content-Type': None, 'Content-Location': None, 'Content-Disposition': 'form-data; name="attachment"; filename*=utf-8\'\'%D7%91%D7%93%D7%99%D7%A7%D7%94.doc'}
メールを受け取りましたが、ファイルが添付されていません。何か案は?