3

(Mailgun には Python ライブラリがないため、これは CURL と Python の両方に適用されます)

ファイルシステムにアクセスせずにサンドボックスサーバーで作業しています。

これは、mailgun によって提供される例です。

def send_complex_message():
    return requests.post(
        "https://api.mailgun.net/v2/samples.mailgun.org/messages",
        auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"),
        files=[("attachment", open("files/test.jpg")),
               ("attachment", open("files/test.txt"))],
        data={"from": "Excited User <me@samples.mailgun.org>",
              "to": "foo@example.com",
              "cc": "baz@example.com",
              "bcc": "bar@example.com",
              "subject": "Hello",
              "text": "Testing some Mailgun awesomness!",
              "html": "<html>HTML version of the body</html>"})

ご覧のとおり、ファイル名は open() 呼び出しでのみ暗示されます。

ファイルシステムにアクセスできないため、リモートの場所からファイルをダウンロードしてデータを渡します。

これにより、メールでデータが送信されますが、ファイル名は無視されます。これにより、クライアントはすべての添付ファイルのファイル拡張子を推測する必要があるため、ファイルを開くことがほとんど不可能になります。

ファイル名を手動で指定するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

8

しばらく掘り下げた後、ここでこれを行う方法を正確に示すサンプルを発見しました。

非常に便利だったので、将来の参照用にそのコードをここに残します。

def send_complex_message():
    return requests.post("https://api.mailgun.net/v2/DOMAIN/messages",
              auth=("api", "key-SECRET"),
              files={
                  "attachment[0]": ("FileName1.ext", open(FILE_PATH_1, 'rb')),
                  "attachment[1]": ("FileName2.ext", open(FILE_PATH_2, 'rb'))
              },
              data={"from": "FROM_EMAIL",
                    "to": [TO_EMAIL],
                    "subject": SUBJECT,
                    "html": HTML_CONTENT
              })
于 2014-02-05T00:08:07.217 に答える