【问题标题】:Create multi-part message in MIME format Freemarker template via Spring 3 JavaMail通过 Spring 3 JavaMail 以 MIME 格式 Freemarker 模板创建多部分消息
【发布时间】:2011-06-02 15:57:47
【问题描述】:

如何创建包含相同内容的文本和 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>

【问题讨论】:

    标签: html spring email text mime


    【解决方案1】:

    使用 Spring 时,您可以:

      String plainText = "MyPleinText";
      String htmlText = "<html><body><h1>MyHTML</h1></body></html>";
      MimeMessage message = this.mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true, MAIL_ENCODING);
      helper.setText(plainText,htmlText);
    

    它会完成这项工作。 不涉及 Freemarker 的东西。

    MailSender 可以是:

      <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${smtp.host}" />
        <property name="port" value="${smtp.port}" />
        <property name="defaultEncoding" value="UTF-8" />
      </bean>
    

    【讨论】:

      【解决方案2】:

      如果您发现任何不一致之处,请告诉我。我必须从非常复杂的对象中提取它,这就是它看起来如此的原因。

      //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);
            }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 2011-12-29
        • 2016-06-26
        • 2012-06-19
        • 2023-01-04
        • 1970-01-01
        • 2011-03-17
        • 2013-06-07
        • 2017-05-12
        相关资源
        最近更新 更多