1

python mailgun-apiを使用して画像付きのメールを送信しています。メールと画像は問題なく受信者に届きますが、送信したテキスト"text": "Testing some Mailgun awesomness!"はそうではなく、本文として出力されます"html": '<html>HTML version of the body</html>'

data={"from": "Excited User <example@mailgun.com>",
      "to": "test@example.com",
      "subject": "Hello",
      "text": "Testing some Mailgun awesomness!",
      "html": '<html>Inline image here: <img src="cid:test.jpg"></html>'})

どうすればこれを修正できますか?もちろん、必要なテキストを html 行に追加すると、問題ないように見えますが、それが正しい方法であるかどうかはわかりません。「html」の部分を本文にして、「text」の部分を削除する必要がありますか?

ありがとうございました

4

1 に答える 1

4

まず、ユーザーズマニュアルにバグがあることに注意してください。正しいコード スニペットは次のようになります。

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ではなくである必要があり、のlistdictはファイル名を含むタプルである必要があります。次に、そのファイル名を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」のみで送信すると、ほとんどの最新の電子メール リーダーで正しくレンダリングされますが、従来の電子メール リーダーでは意味不明になります。「テキスト」のみで送信すると、すべての電子メール リーダーで読み取ることができますが、太字、斜体、インライン画像などのリッチ テキスト機能はありません。

于 2014-10-02T23:12:47.917 に答える