HTML 图像未显示在通过 VBA 中的 Gmail API 发送的 MIME 消息中,使用 3D
Posted
技术标签:
【中文标题】HTML 图像未显示在通过 VBA 中的 Gmail API 发送的 MIME 消息中,使用 3D【英文标题】:HTML image not showing up in MIME message sent via Gmail API in VBA, Used 3D 【发布时间】:2015-08-27 20:56:13 【问题描述】:我正在通过 VBA 中的 Gmail REST API 发送 html 电子邮件,但 HTML 图像未显示在已发送的邮件中。我添加了一个 img 标题标签,我尝试了一个已批准的“ci3.googleusercontent.com”版本的图像作为源,尝试了 png 和 jpg。由于我在 POST 请求的正文中发送电子邮件信息,我认为我不需要使用 Base64。没有任何空格,因此不必担心 %20 和转换为 +。
还有其他想法吗?
Sub SendGmail()
Dim result As String, myURL As String, postData As String
Dim winHttpReq As Object
Dim x As Integer
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
myURL = "https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
postData = "From: 'Michael F' <mf@example.com>" & vbCr & _
"Subject: Test Message " & Now() & vbCr & _
"Reply-To: support@example.com" & vbCr & _
"To: JoeTest@gmail.com" & vbCr & _
"Content-Type: text/html; charset=utf-8" & vbCr & _
"Content-Transfer-Encoding: quoted-printable" & vbCr & vbCr & _
"<b>Test Message</b><p>" & vbCr & vbCr & _
"<img alt='ExampleLogo' " & _
"title='ExampleLogo' src='http://www.example.com/LogoSignature.png'>"
'*Putting 3D right after src= solved the problem!*
winHttpReq.Open "POST", myURL, False
winHttpReq.SetRequestHeader "Host", "www.googleapis.com"
winHttpReq.SetRequestHeader "Content-Length", Len(postData)
winHttpReq.SetRequestHeader "Content-Type", "message/rfc822"
winHttpReq.SetRequestHeader "Authorization", "Bearer <mycode>"
winHttpReq.Send (postData)
Set winHttpReq = Nothing
End Sub
这是收到的电子邮件 HTML 源代码的摘录。我的已发送文件夹中的已发送电子邮件也没有显示图像,但 HTML 在那里,这也很奇怪......
MIME-Version: 1.0
X-Received: by 10.50.30.9 with SMTP id o9mr838664igh.36.1434063589114; Thu, 11
Jun 2015 15:59:49 -0700 (PDT)
Received: from 4.apps.googleusercontent.com named unknown by
gmailapi.google.com with HTTPREST; Thu, 11 Jun 2015 18:59:48 -0400
From: "'Michael F'" <mf@example.com>
Reply-To: support@example.com
Date: Thu, 11 Jun 2015 18:59:48 -0400
Message-ID: <CAKUypCw@mail.gmail.com>
Subject: Test Message 6/11/2015 17:59:51
To: JoeTest@gmail.com
Content-Type: multipart/alternative; boundary=047d7bd76aead100b6051845f2ef
--047d7
Content-Type: text/plain; charset=UTF-8
*Test Message*
--047d7
Content-Type: text/html; charset=UTF-8
<b>Test Message</b><p>
<img></p>
--047d7--
【问题讨论】:
【参考方案1】:我找到了解决方案,但希望有人能解释发生了什么。我在从 Gmail REST 发送的电子邮件中显示 HTML 图像时遇到问题。但是,我发现如果我将“3D”放在图像源的前面,即<img src=3D'http://www.example.com/logo.png'>
,图像将显示在电子邮件中。一些搜索显示 3D 与引用指向有关,但我不明白。 3D的目的是什么?使用有什么危险吗?
找到这个old SO thread 解释:
【讨论】:
以上是关于HTML 图像未显示在通过 VBA 中的 Gmail API 发送的 MIME 消息中,使用 3D的主要内容,如果未能解决你的问题,请参考以下文章