まず、ユーザーズマニュアルにバグがあることに注意してください。正しいコード スニペットは次のようになります。
def send_simple_message():
return requests.post(
"https://api.mailgun.net/v2/YOUR-DOMAIN/messages",
auth=("api", "YOUR-KEY"),
files={"inline":("image", open("/tmp/image.jpg"))},
data={"from": "rob@example.com",
"to": ["rob@example.com"],
"subject": "Hello",
"text": "Testing some Mailgun awesomness!",
"html": '<html>Inline image here: <img src="cid:image"></html>'})
files
パラメータはdict
ではなくである必要があり、のlist
値dict
はファイル名を含むタプルである必要があります。次に、そのファイル名をcid:
HTML の値として使用します。
あなたの質問に関しては、Mailgun が電子メール メッセージを MIME "マルチパート/代替" メッセージとして送信することを理解する必要があります。関連する規格からの引用:
... 体の各部分は、同じ情報の「代替」バージョンです。
システムは、さまざまなパーツの内容が交換可能であることを認識する必要があります。システムは、ローカル環境と設定に基づいて「最適な」タイプを選択する必要があります...
ご覧のとおり、'text' または 'html' のいずれかのみを表示する場合、メール リーダーは正しく動作しています。両方のフォームが送信されていることを証明するには、電子メール メッセージのソースを表示してみてください。Gmail で、[オリジナルを表示] メニュー項目を探します。Firefox では、「View | Message Source」または「View | Message Body As ...」を試してください。
メールの送信者として、可能な限り、同じ意味を持つ「テキスト」と「html」の両方でメッセージを含める必要があります。このような:
text='''Our sale prices are VERY LOW this weekend.
Visit http://sales.example.com.''',
html='''<html>
<img src="cid:logo.jpg"/>
Our sale prices are <b>very low</b> this weekend.
Visit <a href="http://sales.example.com">our website!</a>
</html>'''
ユーザーがどのバージョンを見ても、メッセージを表示するメディアによってのみ制限され、同じ意味を得る方法がわかりますか?
別の方法として、'text' と 'html' の両方で同じメッセージを送信しないことを選択した場合は、どちらか一方のみで送信できます。「html」のみで送信すると、ほとんどの最新の電子メール リーダーで正しくレンダリングされますが、従来の電子メール リーダーでは意味不明になります。「テキスト」のみで送信すると、すべての電子メール リーダーで読み取ることができますが、太字、斜体、インライン画像などのリッチ テキスト機能はありません。