[英]Spring Mail inline Images not getting attached
我已經編寫了用於發送帶有嵌入式圖像的郵件的代碼。
final MimeMessagePreparator messagePreparator = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_RELATED);
mimeMessageHelper.setTo(mailTo);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(mailContent,true);
InternetAddress fromAddress = new InternetAddress(mailFromEmail,mailFromName);
mimeMessageHelper.setFrom(fromAddress);
for(String inlineImage : inlineImages) {
attachImage(mimeMessageHelper, inlineImage);
}
}
};
這段代碼運行良好。 但是后來需要以某種區域性語言發送郵件,因此代碼失敗。 所以我將代碼更改為
final MimeMessagePreparator messagePreparator = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_RELATED);
mimeMessageHelper.setTo(mailTo);
/**
* for allowing UTF-8 encoding in mail body ie support for regional languages
*/
MimeBodyPart att = new MimeBodyPart();
att.setText(mailContent, "UTF-8", "plain");
att.addHeader("Content-Type", "text/html; charset=UTF-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(att);
mimeMessage.setContent(multipart);
/**
* for allowing UTF-8 encoding in mail body ie support for regional languages ends
*/
mimeMessageHelper.setSubject(subject);
// mimeMessageHelper.setText(mailContent,true);
InternetAddress fromAddress = new InternetAddress(mailFromEmail,mailFromName);
mimeMessageHelper.setFrom(fromAddress);
for(String inlineImage : inlineImages) {
attachImage(mimeMessageHelper, inlineImage);
}
}
};
attachImage方法是:
private void attachImage(MimeMessageHelper mimeMessageHelper,String imageName) throws MessagingException{
mimeMessageHelper.addInline(imageName, new ClassPathResource("mailimg/" + imageName));
}
現在,語言顯示良好,但是內聯圖像未附加。 如果語言支持不是它的原意或其他任何功能,我將無法理解。 任何幫助將不勝感激。
還原對代碼所做的更改,您似乎唯一要做的就是使用UTF-8
編碼。 有更簡單,更不麻煩的方法來做到這一點。
JavaMailSenderImpl
。 MimeMessageHelper
首先是最少的干擾。 只需在配置中添加一行(如果您使用的是XML),所有郵件將使用UTF-8發送。 將JavaMailSenderImpl
的defaultEncoding
屬性設置為要使用的編碼。
<bean id="mailSender" class=org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="defaultEncoding" value="UTF-8" />
</bean>
第二個更具侵入性,因為您必須更改代碼。 MimeMessageHelper
具有采用編碼的構造函數 。 您(更改后的)代碼中唯一需要更改的行是MimeMessageHelper
的構造。
MimeMessageHelper mimeMessageHelper =
new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_RELATED, "UTF-8");
兩種方式都應該給您提供UTF-8編碼的電子郵件,並且簡單得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.