通过 Spring 3 JavaMail 创建 MIME 格式 Freemarker 模板的多部分消息

2024-01-12

如何创建包含相同内容的文本和 HTML 版本的电子邮件?

当然,我想知道如何设置 freemarker 模板或将发送的消息的标头。

当我查看收件箱中每次收到的 MIME 格式的多部分消息的来源时,其中的内容如下:

This is a multi-part message in MIME format.

------=_NextPart_000_B10D_01CBAAA8.F29DB300
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

...Text here...

------=_NextPart_000_B10D_01CBAAA8.F29DB300
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html><body> html code here ... </body></html>

如果您发现任何不一致之处,请告诉我。我必须从相当复杂的对象中提取它,这就是为什么它看起来像这样。

//some important imports
import freemarker.template.Template;
import org.springframework.mail.javamail.*;
import org.springframework.context.*;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import javax.mail.internet.MimeMessage;

private JavaMailSender mailSender;
private MessageSource messageSource;
private ExecutorService executor = Executors.newFixedThreadPool(50);

MimeMessagePreparator preparator = new MimeMessagePreparator() {
    public void prepare(MimeMessage mimeMessage) throws Exception {
        MimeMessageHelper message = new MimeMessageHelper(mimeMessage);

            message.setFrom(from);
            message.setTo(recipient);
            message.setSubject(subject);

            // Now the message body.
            Multipart mp = new MimeMultipart();

            BodyPart textPart = new MimeBodyPart();
            Template textTemplate = freemarkerConfig.getConfiguration().getTemplate(textEmailTemplate); // "/WEB-INF/emailText/*.ftl"
            final StringWriter textWriter = new StringWriter();
            textEmailTemplate.process(modelMap, textWriter);
            textPart.setText(textWriter.toString()); // sets type to "text/plain"


            BodyPart pixPart = new MimeBodyPart();
            Template pixTemplate = freemarkerConfig.getConfiguration().getTemplate(pixEmailTemplate); // "/WEB-INF/emailPix/*.ftl"
            final StringWriter pixWriter = new StringWriter();
            textEmailTemplate.process(modelMap, pixWriter);
            pixPart.setContent(pixWriter.toString(), "text/html");

            // Collect the Parts into the MultiPart
            mp.addBodyPart(textPart);
            mp.addBodyPart(pixPart);
            // Put the MultiPart into the Message
             message.setContent(mp);                  

     }
};

executor.submit(new SendMail(preparator));

class SendMail extends Thread {
    MimeMessagePreparator preparator;

    SendMail(MimeMessagePreparator preparator) {
        this.preparator = preparator;
    }

    public void run() {
        mailSender.send(preparator);
      }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Spring 3 JavaMail 创建 MIME 格式 Freemarker 模板的多部分消息 的相关文章

  • 如何使用 Jspdf 将 Html 表数据导出为 PDF

    如何将 HTML 页面中的表格导出为 PDF 我已经完成了一些示例数据 但无法将 HTML 表格列表加载到 PDF 中 请任何人帮助我将表格加载到 PDF 中
  • 我创建了一个对话框,现在如何关闭它?

    我在下面添加了一个指向我网站的链接 用于查看头部部分中的 JS 并让您了解我是如何设置这一切的 如果您不想使用该链接 我也会尝试添加下面的代码 我最近在我网站的某些页面上学习了一些基本的 AJAX我创建了一个对话框 您将看到它出现在滚动条上
  • 如何在不同的端口上运行@RestController?

    我在用着spring rest创造一些 RestController小服务程序 该应用程序不是在网络服务器上运行 而是作为带有嵌入式 tomcat 的简单命令行工具运行 它们中的大多数应该在公共端口上运行 该端口是使用指定的server p
  • 内部分页:避免不工作

    我的 Wordpress 网站有一个打印样式表 我希望图像打印在单个页面上而不是跨页面拆分 在某些情况下 甚至几行文本也会被分割到不同的页面上 我已经包括了img page break avoid 在我的打印样式表中 但没有运气 我找到了一
  • 如何以编程方式将图片上传到 Facebook?

    好的 这是我的第一个问题 如何允许我网站上的访问者在他们的 Facebook 新闻源上分享我的照片 https webapps stackexchange com questions 10140 how do i allow visitor
  • 关闭引导选项卡中的按钮 - 不将

    这个问题Twitter Bootstrap3 选项卡的关闭按钮 https stackoverflow com questions 23211290 close button for twitter bootstrap3 tabs展示了如何
  • 仅在图像加载后应用 jQuery 瀑布“回流”

    我正在使用 jQuery 瀑布来显示网格样式 为了阻止常见的图像重叠问题 我将瀑布方法包装在 load 函数中 例如 window load function buildcontainer waterfall colMinWidth 260
  • Shadow DOM,使用它的目的

    我最近研究了 Shadow DOM 我想知道使用它而不是主要目的是什么 它能带来什么 为什么我们不使用标准 DOM 来代替它 样式范围除外 它允许您封装功能 有效地将其放入黑匣子中 这意味着您可以创建内部工作原理不公开的 可重用 组件 使用
  • 如何使用 !important 使用 jquery 覆盖内联样式?

    我有一个 p style color red important sample text here p 然后我想在 JQuery 中覆盖该样式 我该怎么做 using important在 CSS 中显然行不通 但还是尝试了 我在想我是否可
  • Spring @ControllerAdvice 与 ErrorController

    在我的 REST 服务应用程序中 我计划创建一个 ControllerAdvice捕获控制器抛出的异常并返回的类ResponseEntity根据错误类型的对象 但我已经有一个 RestController类实现ErrorController
  • 使用 WAMP 在浏览器中显示为注释的 PHP 代码 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 正如标题中所述 我的 PHP 代码显示在浏览器代码检查器中 就像被注释掉一样 例如
  • 为 HTML5 Django Web 应用程序实现实时通知系统

    我目前正在开发一个由 Django apache 提供服务的 HTML5 Web 应用程序 该应用程序的目标是监视多个设备 所有客户端逻辑都是用 Angular 编写的 所有数据都来自对后端进行的基于 JSON 的类似 REST 的调用 我
  • Spring / AOP:在数据库中实现活动日志的最佳方式

    我已经阅读了一些 Spring AOP 教程 并且对相关概念有了一定的熟悉 现在满足我的要求 我需要创建一个活动日志实现 它将在数据库中保存登录用户的活动 范围包括申请服务或在以下情况下创建新用户Admin用户等 在调用任何具有注释的方法时
  • 使用 HTML5 启用后置摄像头

    我正在开发一个使用 MVC ASP Net 4 HTML5 的项目 默认浏览器是 google chrome v29 0 1547 57 我可以与这些工具交互并拍照 但只能使用前置摄像头 如何启用后置摄像头 平板电脑的特点 三星 Galax
  • 在从表单发布到其他人的脚本之前如何执行 php?

    我有一个联系表格 可以发布到 mailchimp 但在某些情况下 我也希望它发送一封电子邮件 我考虑过改变
  • 如何使用 spring data jpa 调用数据库函数?

    我想从 Spring Boot 应用程序调用数据库函数 该函数将返回解密的值 是否可以使用spring data jpa调用数据库函数 如果可以的话怎么办 如果无法使用 spring data jpa 是否有其他方法可以从 Spring B
  • CSS 样式的段落,带有段落编号和旁注

    我想在网上发布一段带有段落编号和旁注的文本 我正在使用 哈克贝利 费恩历险记 作为测试 参见http jsfiddle net 29Mdt http jsfiddle net 29Mdt 我希望将段落编号放在左侧边距中 将旁注放在右侧边距中
  • 内联块元素是否可以自动填充可用宽度?

    我有一个 div 其中包含 div 它们本身就是内联块 我希望能够使main container填充剩余的可用页面宽度 那可能吗 I need columns strip根据数量和宽度扩大或缩小column元素 如果宽度columns st
  • 来自复杂对象的 spring RestTemplate POST 参数

    我正在尝试使用 postForObject 方法使用restTemplate 来测试我们的REST 服务 单元测试 Test public void testPostOrder String url BASE URL orders Orde
  • 使文本“bbb”位于图标旁边,而不是压在一起

    Goal 使字母 bbb 可见 并且文本应位于图标旁边 Problem 我尝试将文本移到右侧 但不起作用 你们知道该怎么做吗 JSfiddle https jsfiddle net 5f7qjLgf 1 Thanks result filt

随机推荐