如何通过第三方POST接口发送带非内嵌附件的邮件?
解决方案:在受限POST字段中添加非内嵌邮件附件
首先,你的方向完全正确——通过Multipart MIME格式结合Base64编码附件,确实能在仅提供SUBJECT、RECIPETANTS和HTML BODY字段的第三方API中实现非内嵌附件。不过你的尝试里有几个关键格式问题需要修正,下面是完整的可落地方案:
核心逻辑梳理
因为第三方API只接受这三个字段,我们需要把完整的Multipart MIME邮件内容作为HTML BODY字段的值传入。部分API会优先使用你传入的SUBJECT和RECIPETANTS字段,而忽略MIME头里的对应信息,所以建议保持两者内容一致,避免出现显示偏差。
修正后的完整示例
下面是调整后的规范Multipart MIME内容(你需要将这段内容直接作为HTML BODY字段的值发送):
Content-Type: multipart/mixed; boundary="unique-random-boundary-789012" MIME-Version: 1.0 --unique-random-boundary-789012 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque odio urna, bibendum eu ultricies in, dignissim in magna. Vivamus risus justo, viverra sed dapibus eu, laoreet eget erat. Sed pretium a urna id pulvinar.</p> <p>Best regards</p> --unique-random-boundary-789012 Content-Type: application/pdf; name="Job Quote for $2,122.26 by SalesTechPro.pdf" Content-Disposition: attachment; filename="Job Quote for $2,122.26 by SalesTechPro.pdf" Content-Transfer-Encoding: base64 X-Attachment-Id: a1e95393-bf80-4844-991a-f41ef177662b JVBERi0xLjUKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL01lZGlhQm94IFswIDAgNTk1LjAwIDg0Mi4wMF0KL1Jlc291cmNlcyAyIDAgUgovQ29udGVudHMgNCAwIFI+Pgplbm(lots of letters) MDAxMDg2NCAwMDAwMCBuIAowMDAwMDExNDA5IDAwMDAwIG4gCjAwMDAwMTE0MjkgMDAwMDAgbiAKMDAwMDAxMTU1NSAwMDAwMCBuIAowMDAwMDExNjMxIDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgMjAKL1Jvb3QgMTkgMCBSCi9JbmZvIDE4IDAgUgo+PgpzdGFydHhyZWYKMTE3MzUKJSVFT0YK --unique-random-boundary-789012--
你原始尝试中的错误点
- 边界分隔格式错误:每个边界分隔线
--[边界字符串]后必须换行,不能直接跟Content-Type头信息(你的示例里把分隔线和头信息写在了同一行,会导致解析失败)。 - 附件MIME类型错误:
image/.pdf是无效类型,PDF文件的标准MIME类型是application/pdf。 - 文件名格式问题:你的文件名里出现了重复的
..pdf后缀,需要修正为正常的.pdf。 - 缺少MIME版本头:添加
MIME-Version: 1.0是确保邮件客户端正确解析MIME结构的必要项。
额外注意事项
- 边界字符串要足够唯一,建议用随机生成的长字符串,避免和邮件正文内容重复。
- Base64编码的附件内容可以保持每行76字符的标准格式,也可以去掉换行(两种格式都能被解析)。
- 如果第三方API要求参数进行URL编码,记得在发送前对整个Multipart内容做URL编码处理。
内容的提问来源于stack exchange,提问作者Chad Lewis
相关产品推荐
相关产品推荐

