我在通过 Gmail 的 API 发送内联附件时遇到了一个奇怪的问题。 我正在使用 .NET 客户端(版本 1.10.0)。 该电子邮件是对我收到的带有内嵌附件的消息的回复,因此附件是回复中引用块的一部分。
这是我发送的原始 MIME 消息:
From: ...
To: ...
Date: Fri, 01 Jul 2016 11:48:29 -0700
Subject: Re: attachment test #2
Message-Id: ...
In-Reply-To:...
References: ...
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-JOa+9Bw0690XCFj1YCPc1Q=="
--=-JOa+9Bw0690XCFj1YCPc1Q==
Content-Type: text/html; charset=utf-8
Content-Id: <W4PKNTOPLYT4.32IVHE45EWK21@BILLRAVDIN9F02>
<div style="font-family: Helvetica, Arial, sans-serif;">back atcha.<div><br>On Fri, Jul 01, 2016 at 11:38 AM, ... wrote:<div>[Omitted for clarity]<img height="168" width="300" src="cid:8AF6D64A-9AAD-4E54-8998-5F08C42F537F"></span></div><br></div></div></div></div></div>
--=-JOa+9Bw0690XCFj1YCPc1Q==
Content-Type: image/jpeg; name="ha ha.jpeg"
Content-Disposition: inline; filename="ha ha.jpeg"
Content-Transfer-Encoding: base64
Content-Id: <8AF6D64A-9AAD-4E54-8998-5F08C42F537F>
[Base64 encoded attachment]
--=-JOa+9Bw0690XCFj1YCPc1Q==--
注意上面内联附件的哑剧部分的内容配置:
内容配置:内联;文件名=“哈哈.jpeg”
这是内联附件部分上的 MIME 标头进入时的样子:
Content-Type: image/jpeg; name="ha ha.jpeg"
Content-Disposition: attachment; filename="ha ha.jpeg"
Content-Transfer-Encoding: base64
Content-ID: <8AF6D64A-9AAD-4E54-8998-5F08C42F537F>
X-Attachment-Id: 594301951148d672_0.1
我的问题是:为什么 Content-Disposition 现在重写为 attachment 而不是 inline?
我发现在浏览器中查看电子邮件时,它按预期显示。 但是,当使用我的 Mac 邮件客户端查看时,内联附件在电子邮件中出现两次。 我怀疑内容配置的变化可能是原因 - 如果您能对此提供任何线索,我们将不胜感激!
我知道这个问题很老了,但我遇到了同样的问题,终于找到了原因。 Gmail 似乎不支持将 MIME 的
inline
部分的 Content-Disposition 设置为 multipart/mixed
。
我的 MIME 的结构与原始问题中的示例类似,将
inline
图像放置在 multipart/mixed
部分,最终更改为 attachment
,然后通过某些电子邮件错误地显示为附件客户。
通过将内联图像放置在邮件正文的
multipart/related
部分中,Gmail 停止更改内容处置并且图像得到了正确处理。
这是我用来让它工作的 MIME 结构(请注意,在我的例子中,我还在电子邮件中附加了一个常规文件):
MIME-Version: 1.0
[...]
--MIXED
--RELATED
--ALTERNATIVE
<Plain text version of the email>
--ALTERNATIVE
<HTML Version of the email>
--ALTERNATIVE--
--RELATED
<Inline image>
--RELATED--
--MIXED
<Attachment file>
--MIXED--