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>
测试一下,看下有没有成功: