使用spring封装的JavaMailSenderImpl发送邮件

使用spring封装功能类写邮件的发送,需要我们做一点点提前准备…

1.如果以自己的QQ邮箱为发送,则需要把自己的邮箱设置中的IMAP/SMTP开启,否则无法发送邮件到指定邮箱中,直接上图,简单明了…
使用spring封装的JavaMailSenderImpl发送邮件_第1张图片
使用spring封装的JavaMailSenderImpl发送邮件_第2张图片
开启完毕,会获得一个16位的授权码(这个授权码比较重要,记得保存),到此,前提工作已经完成了。
2.导入jar包,spring-context-support和mail(因为我的项目时maven项目,如果你们是其他项目,可以自行网上找jar包)也可以通过该网站自行查找相应的jar包 www.mvnrepository.com,前者是spring封装的邮件依赖,后者是mail的核心包
3.编写mail的配置文件mail.properties:
使用spring封装的JavaMailSenderImpl发送邮件_第3张图片
4.配置xml文件,我是直接在applicationContext.xml中配置mail的配置信息的:
使用spring封装的JavaMailSenderImpl发送邮件_第4张图片
(注意一点:如果你项目跟目录有多个.properties配置文件时,最好加上ignore-unresolvable属性)
5.编写service层:
使用spring封装的JavaMailSenderImpl发送邮件_第5张图片
6.编写controller层:
使用spring封装的JavaMailSenderImpl发送邮件_第6张图片
至此,我们就可以运行,向指定邮箱发送指定的邮件了,是不是很简单?
下面是我封装的一个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()发送邮件就完成了.

你可能感兴趣的:(基础,springMail)