那么,废话少说,直接上代码。
1. 目录结构

重点是那几个带mail的,其他文件不用管。
2. pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xxjz</groupId>
  <artifactId>HelloSpringBoot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <parent>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-parent</artifactId>
	    <version>1.5.6.RELEASE</version>
	</parent>
	<dependencies>
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
	    <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
		<dependency>
		    <groupId>javax.mail</groupId>
		    <artifactId>mail</artifactId>
		    <version>1.4.7</version>
		</dependency>
	    
	</dependencies>
	
</project> 
其他文件都是基础的,主要是引入这个mail。 我这个版本比较老旧,更新一下也是可以的。
3. 主要代码
先搞一个邮件实体类
package com.xxjz.sendemail;
import java.io.Serializable;
public class Mail implements Serializable {
	private static final long serialVersionUID = -543077416549260588L;
	private String sendTo;
	private String subject;
	private String text;
	public String getSendTo() {
		return sendTo;
	}
	public void setSendTo(String sendTo) {
		this.sendTo = sendTo;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public Mail() {
		super();
	}
	
	
} 
再搞一个邮箱实体类
package com.xxjz.sendemail;
import java.io.Serializable;
public class MailBox implements Serializable {
	private static final long serialVersionUID = -543077416549260588L;
	private String mailSmtpAuth;          // SMTP?????????
	private String mailSmtpHost;          //SMTP??????
	private String mailSmtpPort;          //?????QQ?????????? ????
	private String mailUser;              //???
	private String mailPassword;          //????
	public String getMailSmtpAuth() {
		return mailSmtpAuth;
	}
	public void setMailSmtpAuth(String mailSmtpAuth) {
		this.mailSmtpAuth = mailSmtpAuth;
	}
	public String getMailSmtpHost() {
		return mailSmtpHost;
	}
	public void setMailSmtpHost(String mailSmtpHost) {
		this.mailSmtpHost = mailSmtpHost;
	}
	public String getMailSmtpPort() {
		return mailSmtpPort;
	}
	public void setMailSmtpPort(String mailSmtpPort) {
		this.mailSmtpPort = mailSmtpPort;
	}
	public String getMailUser() {
		return mailUser;
	}
	public void setMailUser(String mailUser) {
		this.mailUser = mailUser;
	}
	public String getMailPassword() {
		return mailPassword;
	}
	public void setMailPassword(String mailPassword) {
		this.mailPassword = mailPassword;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	
} 
最后再搞一个发送邮件的工具类
package com.xxjz.sendemail;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendMail {
	private static volatile SendMail singleton = null;
	private MailBox mailBox = new MailBox();
	private Mail mail = new Mail();
	private SendMail() {
	}
	public static SendMail getSingleton() {
		if (singleton == null) {
			synchronized (SendMail.class) {
				if (singleton == null) {
					singleton = new SendMail();
				}
			}
		}
		return singleton;
	}
	public void setProperties(MailBox b) {
		this.mailBox = b;
	}
	
	public void setMail(Mail b) {
		this.mail = b;
	}
	public void sendQQSmtpEmail() throws Exception {
		// 创建Properties 类用于记录邮箱的一些属性
		final Properties props = new Properties();
		// 表示SMTP发送邮件,必须进行身份验证
		props.put("mail.smtp.auth", mailBox.getMailSmtpAuth());
		// 此处填写SMTP服务器
		props.put("mail.smtp.host", mailBox.getMailSmtpHost());
		// 端口号,QQ邮箱给出了两个端口
		props.put("mail.smtp.port", mailBox.getMailSmtpPort());
		// 此处填写你的账号
		props.put("mail.user", mailBox.getMailUser());
		// 此处的密码就是前面说的16位STMP口令
		props.put("mail.password", mailBox.getMailPassword());
		// 构建授权信息,用于进行SMTP进行身份验证
		Authenticator authenticator = new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				// 用户名、密码
				String userName = props.getProperty("mail.user");
				String password = props.getProperty("mail.password");
				return new PasswordAuthentication(userName, password);
			}
		};
		// 使用环境属性和授权信息,创建邮件会话
		Session mailSession = Session.getInstance(props, authenticator);
		// 创建邮件消息
		MimeMessage message = new MimeMessage(mailSession);
		// 设置发件人
		InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
		message.setFrom(form);
		// 设置收件人的邮箱
		InternetAddress to = new InternetAddress(mail.getSendTo());
		message.setRecipient(RecipientType.TO, to);
		// 设置邮件标题
		message.setSubject(mail.getSubject());
		// 设置邮件的内容体
		message.setContent(mail.getText(), "text/html;charset=UTF-8");
		// 最后当然就是发送邮件啦
		Transport.send(message);
	}
}
 
最后,让我们写一个测试方法来进行测试。
package com.xxjz.sendemail;
 
public class TEST {
	public static void main(String[] args) throws Exception {
		SendMail sendMail = SendMail.getSingleton();
		MailBox mailBox = new MailBox();
		Mail mail = new Mail();
		mailBox.setMailSmtpAuth("true");
		mailBox.setMailSmtpHost("smtp.qq.com");
		mailBox.setMailSmtpPort("587");
		mailBox.setMailUser("xxxx@qq.com");
		mailBox.setMailPassword("gpbutnthtrvrbabe");
		mail.setSendTo("xxxx@qq.com");
		mail.setText("� � * hello world\n");
		mail.setSubject("����test");
		sendMail.setProperties(mailBox);
		sendMail.setMail(mail);
		sendMail.sendQQSmtpEmail();
	}
}
 
根据自己的邮箱填写相应的参数,就可以测试发送咯
如果大家想要代码,就点击下方链接(为了参加某些活动,设成vip的了)。不过,当然代码全部在上面,不下载也可以。
https://download.csdn.net/download/qqhxmdq/87952277



















