ped*_*ofb 12 java email gmail spring
我正在使用弹簧样本发送内嵌图像.它有效但gmail也将图像显示为附件.怎么避免呢?
代码非常简单.
public class Email {
public static MimeMessagePreparator getContentAsInlineResourceMessagePreparator(final String to) {
MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setSubject("Email with inline image");
helper.setFrom("fake@yourshop.com");
helper.setTo(to);
String content = "Dear pedrofb...";
helper.setText("<html><body><p>" + content + "</p><img src='cid:company-logo'></body></html>", true);
helper.addInline("company-logo", new ClassPathResource("logo.png"));
}
};
return preparator;
}
public final static void main (String argv[]){
//Basic SMTP configuration
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host);
mailSender.setPort(port);
MimeMessagePreparator preparator = getContentAsInlineResourceMessagePreparator("myemail@gmail.com");
mailSender.send(preparator);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题类似于如何阻止电子邮件中的嵌入图像被GMail显示为附件?但答案很老,并没有说明如何正确配置弹簧.我不想自己构建消息部分和标题
在pastebin中发布原始消息
Tar*_*ani 11
问题是MimeType
坚定的
此png
扩展程序被视为image/x-png
代替image/png
此问题导致Gmail出现问题.这已被修复/更改,5.X
也可能在某些4.X
更高版本中(我不确定).但修复很容易.更改
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
至
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8") {
@Override
public void addInline(String contentId, Resource resource) throws MessagingException {
Assert.notNull(resource, "Resource must not be null");
String contentType = this.getFileTypeMap().getContentType(resource.getFilename());
contentType = contentType.replace("x-png", "png");
this.addInline(contentId, resource, contentType);
}
};
Run Code Online (Sandbox Code Playgroud)
它会覆盖MimeType
到image/png
归档时间: |
|
查看次数: |
3040 次 |
最近记录: |