发送包含这些附件、htmlbody、内联图像或所有这些附件的 mime 消息?

Posted

技术标签:

【中文标题】发送包含这些附件、htmlbody、内联图像或所有这些附件的 mime 消息?【英文标题】:Sending mime message containing any of these attachment,htmlbody ,inline image or all of them? 【发布时间】:2012-10-22 00:57:35 【问题描述】:

据我所知,我的电子邮件应用程序仅支持带有附件的纯文本。如果附件列表为空,我会以简单的方式处理它, 只需发送 mime 消息,如果附件列表不为空,我正在为每个附件创建正文部分,为正文创建一个。添加它们 在设置为 MIME 消息的多部分中。

但现在需要支持html部分和内联图片(图片将作为附件发送 和 html 正文将引用)​​。我知道 mime 的基础知识,即如何为每种 mime 类型创建正文部分。但我真的没有得到 当我不知道正文和附件列表将包含什么时,如何在运行 timw 时创建正文部分。例如 body 只能包含普通的 文本或 html 正文或带有附件的 html 正文或带有带附件的内联图像的 html 正文或带有附件的普通正文。

坦率地说,我没有得到 如何处理上述排列和组合的电子邮件正文和附件列表。(例如,有时我需要创建顶部 消息作为多部分/混合包含身体部分作为多部分/替代和另一个身体部分平原,bla bla....)。 有标准吗 基于正文内容和附件列表处理这些所有场景的代码。请指出正确的方向?

这是旧的方法签名,它只支持带有附件的纯文本

  public void sendMimeEmail(List toMailAddresses,
  String fromMailAddress,   String body, List<AttachmentData> attachments) 

【问题讨论】:

【参考方案1】:

我不认为这里有什么魔法。您只需要足够的“if”语句来涵盖这些情况。

【讨论】:

比尔。根据我的理解,实现这种最佳方法是解析消息正文并查看是否存在带有 cid 的 html 标记或 html 标记。如果存在,则将 mime 消息设置为 multipart/alternative 或 multipart/related。这种逻辑。对吗? 通常我希望您的程序知道消息正文是 html 还是纯文本。如果你必须猜测,你可以想出你喜欢的启发式方法。您是否正在收集消息正文作为用户的输入? 是的,我正在收集消息正文文本作为来自用户的输入。我计划每次将文本视为 html,然后将消息作为替代,以便不支持 html 文本的电子邮件客户端,可以拿起文本/普通部分吗? 是的,可以,但是您需要自己将用户输入的 html 文本转换为纯文本; JavaMail 不会帮助您。

以上是关于发送包含这些附件、htmlbody、内联图像或所有这些附件的 mime 消息?的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 html 表单中的 mail() 自动发送内联和/或附件,但不断获取二进制字符串

使用 Django 在 HTML 电子邮件模板中将图像作为内联附件发送

使用 perl 发送带有文件附件的多部分文本/html 替代消息,

在使用 Excel VBA 发送的电子邮件中内联附加图像

无法使用 CID 将文件添加为内联附件 python 烧瓶

C# 使用 SmtpClient 发送内联图像的邮件