Подготовка простой составной / альтернативной электронной почты с использованием MimeMessageHelper (Spring Framework) - PullRequest
3 голосов
/ 21 августа 2010

Я хотел бы подготовить простое html-письмо с альтернативной текстовой версией. Мне не нужны вложения или встроенные элементы.

По умолчанию, если я использую:

MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");

Я получаю MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED режим.

Текст моего электронного письма выглядит следующим образом:

Content-Type: multipart/mixed; 
    boundary="----=_Part_8_21489995.1282317482209"

------=_Part_8_21489996.1282317482209
Content-Type: multipart/related; 
    boundary="----=_Part_9_21489996.1282317482209"

------=_Part_9_21489996.1282317482209
Content-Type: multipart/alternative; 
    boundary="----=_Part_10_2458205.1282317482209"

------=_Part_10_2458205.1282317482209
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Simple newsletter.

------=_Part_10_2458205.1282317482209
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
    <head>
        <title>Simple newsletter</title>
    <head>
    <body>
        <p>Simple newsletter.</p>
    </body>
<html>

------=_Part_10_2458205.1282317482209--

------=_Part_9_21489996.1282317482209--

------=_Part_8_21489995.1282317482209--

Что я могу сделать, чтобы избавиться от смешанных и связанных границ?

Идеальным решением будет режим MimeMessageHelper.MULTIPART_MODE_ALTERNATIVE, но он недоступен.

Ответы [ 2 ]

5 голосов
/ 10 апреля 2014

Существует также более простой способ сделать это:

MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
messageHelper.setFrom("your@mail.com");
messageHelper.setTo("target@mail.com");
messageHelper.setSubject("Spring mail test");
messageHelper.setText("Plain message", "<html><body><h2>html message</h2></body></html>");
javaMailSender.send(message);
4 голосов
/ 04 апреля 2011

Из-за проблемы проверки спама я искал отправку html-письма с альтернативой, но кажется, что весна просто не предоставляет простой MimeMessageHelper.MULTIPART_MODE_ALTERNATIVE.Однако, используя MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, чтобы мои электронные письма достигли их назначений.

Если вы все еще хотите избавиться от смешанных и связанных границ, вам требуется больше контроля над тем, как собирается сообщение MIME, вы можете создать реализациюинтерфейс MimeMessagePreparator и передайте его методу JavaMailSender.send () вместо MimeMessage.

  sender.send(new MessagePreparator());
private class MessagePreparator implements MimeMessagePreparator {<br/>       public void prepare(MimeMessage msg) throws Exception {<br/>           // set header details<br/>           msg.addFrom(InternetAddress.parse(from));<br/>           msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));<br/>           msg.setSubject(subject);<br/>                                                       <br/>            // create wrapper multipart/alternative part<br/>            MimeMultipart ma = new MimeMultipart("alternative");<br/>            msg.setContent(ma);<br/>            // create the plain text<br/>            BodyPart plainText = new MimeBodyPart();<br/>            plainText.setText("This is the plain text version of the mail.");<br/>            ma.addBodyPart(plainText);<br/>            // create the html part<br/>            BodyPart html = new MimeBodyPart();<br/>            html.setContent(<br/>                    "<html><head></head><body><br/><h1>This is the HTML version of the mail."<br/>                             + "</h1></body></html>", "text/html");<br/>            ma.addBodyPart(html);<br/>        }<br/>    }<br/>}<br/>

Порядок, в котором вы добавляете экземпляры BodyPart в MimeMultipart, важен, и вы должны добавитьBodyPart с наиболее предпочтительным форматом сообщения в последнюю очередь.

Это выдержка из Pro13, глава 13, глава 13 - § Отправка сообщения HTML с помощью обычного текста;APRESS ISBN-13 (pbk): 978-1-59059-921-1

...