2010-08-21 2 views
3

Я хотел бы подготовить простой html-адрес электронной почты с альтернативной текстовой версией. Мне не нужны никакие вложения или встроенные элементы.Подготовка простого многостраничного/альтернативного электронного письма с использованием MimeMessageHelper (Spring Framework)

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

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-- 

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

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

ответ

4

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

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

sender.send(new MessagePreparator()); 
 
private class MessagePreparator implements MimeMessagePreparator {
public void prepare(MimeMessage msg) throws Exception {
// set header details
msg.addFrom(InternetAddress.parse(from));
msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
msg.setSubject(subject);

// create wrapper multipart/alternative part
MimeMultipart ma = new MimeMultipart("alternative");
msg.setContent(ma);
// create the plain text
BodyPart plainText = new MimeBodyPart();
plainText.setText("This is the plain text version of the mail.");
ma.addBodyPart(plainText);
// create the html part
BodyPart html = new MimeBodyPart();
html.setContent(
"<html><head></head><body>
<h1>This is the HTML version of the mail."
+ "</h1></body></html>", "text/html");
ma.addBodyPart(html);
}
}
}

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

Это выдержка из Pro Spring 2.5 chapter13 - § Отправка HTML-сообщения с альтернативой обычного текста; Apress ISBN-13 (ПБК): 978-1-59059-921-1

5

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

MimeMessage message = javaMailSender.createMimeMessage(); 
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8"); 
messageHelper.setFrom("[email protected]"); 
messageHelper.setTo("[email protected]"); 
messageHelper.setSubject("Spring mail test"); 
messageHelper.setText("Plain message", "<html><body><h2>html message</h2></body></html>"); 
javaMailSender.send(message); 

 Смежные вопросы

  • Нет связанных вопросов^_^