首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mailgun发送内联图像,但没有文本。[Python+Mailgun-Api]

Mailgun发送内联图像,但没有文本。[Python+Mailgun-Api]
EN

Stack Overflow用户
提问于 2014-10-02 17:14:18
回答 1查看 1.4K关注 0票数 1

我使用python mailgun-api发送带有图像的电子邮件,电子邮件和图像到达收件人时没有问题,但是我在"text": "Testing some Mailgun awesomness!"中发送的文本没有问题,它输出为正文文本-- "html": '<html>HTML version of the body</html>'部分。

代码语言:javascript
复制
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”部分吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 23:12:47

首先,注意用户手册有一个错误。正确的代码片段应该如下所示:

代码语言:javascript
复制
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中的值必须是包含文件名的元组。然后在HTML中使用该文件名作为cid:值。

至于你的问题,你需要理解的是,Mailgun将电子邮件作为MIME的“多部分/替代”消息发送。引用相关标准

..。每个身体部分都是相同信息的“替代”版本。系统应该认识到各个部分的内容是可以互换的。系统应该根据本地环境和偏好选择“最佳”类型。

所以你看,你的电子邮件阅读器的行为是正确的,当它只给你一个’或'html‘。要向自己证明这两种形式都在发送,请尝试查看电子邮件消息的来源。在Gmail中,查找“显示原始”菜单项。在Firefox中,尝试“查看消息源”或“查看消息体为.”。

作为一个邮件发件人,如果有可能的话,你应该把你的邮件同时包含为'text‘ 'html',具有同等的含义。如下所示:

代码语言:javascript
复制
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',那么它将正确地呈现在大多数现代电子邮件阅读器,但将是胡说八道的传统电子邮件阅读器。如果你只发送“文本”,它将在所有电子邮件阅读器上可读,但不会有任何丰富的文本功能:粗体,斜体,内联图像,等等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26165999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档