为何MIME多部分邮件中的内嵌图片显示为ATT00001附件?
问题解决:MIME邮件内嵌图片变为ATT00001附件
你的邮件内嵌图片被识别为普通附件,核心问题是MIME边界分隔线与后续的图片头信息之间存在多余空行,同时还有一处标准格式细节需要调整:
错误点分析
- 图片部分的边界分隔线
--_BOUNDRY_RELATED_之后多了一个空行,导致邮件客户端无法正确解析图片的MIME头,进而将图片判定为普通附件。 multipart/related的type参数值未按RFC标准用双引号包裹(部分客户端兼容,但严格规范需要)。
修正后的完整邮件内容
From: Me <me@example.com> To: Me <me@example.com> Subject: test message MIME-Version: 1.0 Content-Type: multipart/related; boundary="_BOUNDRY_RELATED_"; type="multipart/alternative" --_BOUNDRY_RELATED_ Content-Type: multipart/alternative; boundary="_BOUNDRY_ALT_" --_BOUNDRY_ALT_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This is text --_BOUNDRY_ALT_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <html> <head> <body> <h3>This is HTML</h3> <img src="cid:myimage@example.com"/> </body> </html> --_BOUNDRY_ALT_-- --_BOUNDRY_RELATED_ Content-Type: image/jpeg; name="myimage.jpg" Content-Description: myimage.jpg Content-Disposition: inline; filename="myimage.jpg" Content-ID: <myimage@example.com> Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEAYABgAAD/7QEwUGhvdG9zaG9 ... --_BOUNDRY_RELATED_--
关键修正说明
- 删除
--_BOUNDRY_RELATED_与图片Content-Type头之间的空行,确保边界分隔线后直接紧跟该部分的MIME头信息。 - 给
multipart/related的type参数值加上双引号,符合MIME标准规范。
另外需确认图片的Base64编码完整无截断,这也是内嵌图片正常显示的必要前提。
内容的提问来源于stack exchange,提问作者Steve Maring
相关产品推荐
相关产品推荐

