在企业系统里,邮件模板很少只是几行纯文本。采购审批、发票提醒、主数据变更通知、营销活动确认函,这些邮件往往都带着公司 Logo、二维码、状态图标、签名图片,甚至还有一整套 HTML 布局。过去我们处理这类邮件时,最常见的方式是让 HTML 里的<img>指向一个 Web Server,或者从 SAP MIME Repository 里读取图片,再通过邮件的 MIME 结构把图片塞进正文。
这次场景稍微绕了一点,模板里的图片不是 URL,也不是 MIME Repository 路径,而是直接写在 HTML 里的 Base64 Data URI,形式大致是<img src='data:image/png;base64,...'>。这种写法在浏览器里很自然,HTML 一打开,图片马上就能显示。可邮件客户端不是浏览器,尤其是 Gmail、Outlook、移动端邮件 App 对 Base64 图片的处理差异很大。Caniemail 对 Base64 image format 的邮件客户端兼容性统计也显示,Gmail 不支持这类直接内嵌 Base64 图片,Outlook 也存在部分支持的情况。(caniemail.com)
所以,ABAP 端不能只是把这段 HTML 原样丢给CL_DOCUMENT_BCS。更稳妥的做法是把 HTML 中的 Base64 图片提取出