【发布时间】:2013-08-21 02:51:57
【问题描述】:
我正在从我的 gmail 帐户发送电子邮件。
我正在寻找最安全的跨客户端方式来发送内联消息,以便所有消息都显示内联图像。
在通过电子邮件发送带有内嵌图像的 html 时会出现问题:并非所有客户端/网络邮件都显示图像。我正在寻找一种针对客户或特定于客户的方法。
我正在使用 python,我可以控制标题和内容类型等。
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
或
<div style="width: 80px; height: 80px; background:
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAA
AAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' ) no-repeat" />
使用以下 html 代码,图像是/不显示...:
- Thunderbird 桌面客户端:一直显示
- gmail 网络邮件:从未显示
- yahoo webmail:通常
- hotmail 网络邮件:很少
- firefox + chrome - 作为 url:始终显示
我不知道它何时有效,何时无效(除了明显的语法或编码错误)。
到目前为止我做了什么:
- 尝试浏览器 URL(如上所述 - 它总是显示图像)
- 在所有这些客户端/网络邮件中打开“显示图像”
- 在所有这些客户端/网络邮件中打开“显示来自 xxxx 的图像”
- 已通过“查看消息来源”(或 gmail 的“显示原文”)确认 - 图片代码通常在那里。
- 从“查看源代码”和verified in js fiddle复制了相同的代码
- 添加了“utf-8”编码
- 我尝试使用文件附件而不是内联 base64 url 发送图像。这种方法还有其他问题。
以 UTF-8 格式发送 html 消息
msgpart = MIMEText(body_html, "html", "utf-8")通过几个选项更改了消息类型.. 现在是 MIMEMultipart("alternative") - 也许我应该使用另一种格式?
- 尝试使用 CSS 表示法和 IMG SRC 表示法(见上文)。并非始终支持 CSS 版本。
(以上示例取自维基百科)
甚至可以将此行放在浏览器的 URL 中 - 它可以工作 - 即显示图像
gmail smpt 是否需要特殊参数?参数?
我猜如果邮件在 Thunderbird 中显示,它可能是正确发送的。
也许
【问题讨论】:
标签: python email gmail email-attachments