使用 Gmail API 创建的草稿邮件中未呈现图像

Posted

技术标签:

【中文标题】使用 Gmail API 创建的草稿邮件中未呈现图像【英文标题】:Images not rendering in draft message created using Gmail API 【发布时间】:2016-09-27 20:14:34 【问题描述】:

我正在通过 API 在 GMail 中创建草稿消息,原始消息是(在 base64urlencoding 之前):

X-Sender: sender@sender.com.au
X-Receiver: receiver@receiver.com.au
MIME-Version: 1.0
From: sender@sender.com.au
To: receiver@receiver.com.au
Subject: This email is from API
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

<html>
    <style>
        pmargin-top:0px; margin-bottom:0px;
    </style>
    <body class="setupTab" style=" background-color:#CCCCCC; bEditID:b1st1; bLabel:body;">
        <center >
            <table cellpadding="0"  cellspacing="0" id="topTable"  >
                <tr valign="top" >
                    <td style=" background-color:#FFFFFF; bEditID:r1st1; bLabel:header; vertical-align:top; height:100; text-align:left;">
                        <img border="0" bEditID="r1sp1" bLabel="headerImage" id="r1sp1" src="https://cs31.salesforce.com/servlet/servlet.ImageServer?id=<someid>&oid=<someid>" ></img>
        .... 
    </body>
</html>

然后用户被重定向到https://mail.google.com/mail/u/0/#drafts?compose=&lt;id&gt; 以查看电子邮件然后发送。

但是,作为 html 一部分的图像不会被渲染/显示。 html 渲染还有一些其他小问题,但图像是关键

有什么想法吗?

【问题讨论】:

Somewhat related 【参考方案1】:

您需要创建多部分/相关消息,其中一部分是电子邮件的 HTML 内容,另一部分是图像。图像部分包含指定图像 ID 的 Content-ID 标头,HTML 图像标记在 src 属性中使用格式 cid:ID_HERE 引用该 ID。

如果创建它很困难,您可以使用此处提到的脚本和库: creating a MIME email template with images to send with python / django

还有一个类似的问题:GMAIL API for sending Email with attachment

【讨论】:

谢谢,这行得通!将带有 src= 的 html 转换为嵌入的 base64 图像将是一个挑战,尽管在 Salesforce 中:)【参考方案2】:

我尝试了以下替代方法,它无需将消息转换为多部分即可工作。

将所有“=”符号替换为“=3D”,如下所示:

<img border=3D"0" bEditID=3D"r1sp1" bLabel=3D"headerImage" id=3D"r1sp1" src="https://cs31.salesforce.com/servlet/servlet.ImageServer?id=<someid>&oid=<someid>" ></img>

并使用Contact-Transfer-Encoding: quoted-printable

图像随后在 GMail 草稿中正确呈现。

【讨论】:

以上是关于使用 Gmail API 创建的草稿邮件中未呈现图像的主要内容,如果未能解决你的问题,请参考以下文章

通过 Gmail REST API 发送的电子邮件/草稿无法在新的 Gmail 用户界面中打开

MIME 标头无法通过 Gmail API

如何在浏览器中打开使用 Gmail API 创建的草稿?

使用 Gmail API 时,您能否以及如何在电子邮件中嵌入图像?

带有 MimeKit、C# Winforms 和 Google API 的 Gmail 草稿(带附件的 HTML)

带有 .Net 客户端库的 Gmail api:缺少草稿消息 [400]