Multipart Email允许添加附件和内部资源,内部资源可能是你在信件中希望使用的图像或样式表,但又不想把它们作为附件
一、附件:
接口:见MailSender和SimpleMailMessage的基本用法
实现类:
package com.mail.sender;
import com.mail.service.OrderManager;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.lang.management.MonitorInfo;
/** Multipart Email-添加附件
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 12-6-13
* Time: 上午11:19
* To change this template use File | Settings | File Templates.
*/
public class MimeHelper implements OrderManager {
private JavaMailSender javaMailSender;
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void placeOrder() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message,true); //使用Multipart格式
} catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
FileSystemResource file = new FileSystemResource(new File("C:\\Users\\Administrator\\Pictures\\1.png"));
try {
helper.setTo("240609256@qq.com");//toXXX邮箱
helper.setFrom("hanxiaoying@iplamp.com"); //from XXX邮箱
helper.setSubject("helper");
helper.setText("hello");
helper.addAttachment("1.png",file); //添加附件
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
配置文件见:MimeMessageHelper的基本用法 的配置文件
测试没有异常就成功了
效果如下:

二、内部资源
实现类:
package com.mail.sender;
import com.mail.service.OrderManager;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 12-6-13
* Time: 下午1:51
* To change this template use File | Settings | File Templates.
*/
public class InResource implements OrderManager {
private JavaMailSender javaMailSender;
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void placeOrder() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true); //使用Multipart格式
} catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
FileSystemResource file = new FileSystemResource(new File("C:\\Users\\Administrator\\Pictures\\1.png"));
try {
helper.setTo("240609256@qq.com");//toXXX邮箱
helper.setFrom("hanxiaoying@iplamp.com"); //from XXX邮箱
helper.setSubject("helper");
helper.setText("hello,看图:<html><body><img src='cid:identifier1234'></body></html>", true);//true 表示启动HTML格式的邮件
helper.addInline("identifier1234", file); //添加附件
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
配置文件:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.exmail.qq.com"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="username" value="hanxiaoying@iplamp.com"/>
<property name="password" value="hanxiaoying0303"/>
<property name="javaMailProperties">
<value>
mail.smtp.auth=true
</value>
</property>
</bean>
<bean id="inResource" class="com.mail.sender.InResource">
<property name="javaMailSender" ref="mailSender"/>
</bean>
测试一下,看下有没有成功:

本文深入解析MultipartEmail在发送邮件时如何高效地整合附件与内部资源,通过JavaMailSender与MimeMessageHelper的配合,实现邮件中包含图像或样式表而不作为附件,同时展示配置文件及测试过程。
1249

被折叠的 条评论
为什么被折叠?



