使用spring封装功能类写邮件的发送,需要我们做一点点提前准备…
1.如果以自己的QQ邮箱为发送,则需要把自己的邮箱设置中的IMAP/SMTP开启,否则无法发送邮件到指定邮箱中,直接上图,简单明了…
开启完毕,会获得一个16位的授权码(这个授权码比较重要,记得保存),到此,前提工作已经完成了。
2.导入jar包,spring-context-support和mail(因为我的项目时maven项目,如果你们是其他项目,可以自行网上找jar包)也可以通过该网站自行查找相应的jar包 www.mvnrepository.com,前者是spring封装的邮件依赖,后者是mail的核心包
3.编写mail的配置文件mail.properties:
4.配置xml文件,我是直接在applicationContext.xml中配置mail的配置信息的:
(注意一点:如果你项目跟目录有多个.properties配置文件时,最好加上ignore-unresolvable属性)
5.编写service层:
6.编写controller层:
至此,我们就可以运行,向指定邮箱发送指定的邮件了,是不是很简单?
下面是我封装的一个MailUtil工具类:
package com.hjx.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import com.hjx.domain.Mail;
public class MailUtil{
private static String host;
private static String username;
private static String password;
private static String defaultEncoding;
private static JavaMailSenderImpl javaMailSenderImpl;
static {
init();
}
/**
* 邮件配置初始化
*/
private static void init() {
try {
Properties pop = new Properties();
InputStream in = MailUtil.class.getClassLoader().getResourceAsStream("mail.properties");
pop.load(in);
host = pop.getProperty("mail.host");
username = pop.getProperty("mail.username");
password = pop.getProperty("mail.password");
defaultEncoding = pop.getProperty("mail.defaultEncoding");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 设置邮件信息
* @param mail
* @return
* @throws UnsupportedEncodingException
* @throws MessagingException
*/
private static JavaMailSenderImpl createMimeMessage(){
javaMailSenderImpl = new JavaMailSenderImpl();
//设置邮件配置
javaMailSenderImpl.setHost(host);
javaMailSenderImpl.setUsername(username);
javaMailSenderImpl.setPassword(password);
javaMailSenderImpl.setDefaultEncoding(defaultEncoding);
Properties p = new Properties();
javaMailSenderImpl.setJavaMailProperties(p);
return javaMailSenderImpl;
}
/**
* 发送邮件
* @param mail
* @throws UnsupportedEncodingException
* @throws MessagingException
*/
public static void sendMail(Mail mail) throws UnsupportedEncodingException, MessagingException {
/*
* 动态存入mail
* params:
* from:发送人账号
* fromName:发送人姓名
* subject:邮件主题
* to:收件人账号
* content:邮件内容
*/
//设置邮件内容
JavaMailSenderImpl mailSender = createMimeMessage();
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true,"utf-8");
messageHelper.setFrom(mail.getFrom(),mail.getFromName());
messageHelper.setSubject(mail.getSubject());
messageHelper.setText(mail.getContent());
messageHelper.setTo(mail.getTo());
mailSender.send(mimeMessage);
}
}
(工具类,就可以不用再xml中配置信息了,可以使用Properties类读取信息)
大功告成了,使用spring发送邮件,只要记住三点就可以了:
一:设置JavaMailSenderImpl():这个是设置邮箱的主要信息,如邮箱服务器地址、邮箱账号、邮箱密码(即前提准备的16位授权码)
二:设置MimeMessageHelper():这个是设置邮件的内容,如邮件头、发件账号、发件人、收件人、邮件内容,附件等
三:使用JavaMailSenderImpl().send()发送邮件就完成了.