一、利用JavaMail发送邮件案例:
1、maven项目结构:
2、先在pom.xml里边加入Javamail依赖,系统会根据坐标自动下载mail包(前提是配置好了maven):
3、配置email.properties属性文件,主要是为了不更改代码的前提下,该改变发送邮件的一些基本信息:
4、实现发送邮件的主体类SendMailUtils,代码下:
package top.hzelin.util; import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; public class SendMailUtils {
private static String from = "";
private static String user = "";
private static String password = "";
/*
* 读取属性文件的内容,并为上面上个属性赋初始值
*/
static {
Properties prop = new Properties();
InputStream is = SendMailUtils.class.getClassLoader().getResourceAsStream("email.properties");
try {
prop.load(is);
from = prop.getProperty("from");
user=prop.getProperty("username");
password=prop.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void sendMail(String to,String text,String title) {
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.163.com");//设置邮件服务器主机名
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "true");//发送服务器需要身份验证
Session session = Session.getDefaultInstance(props);//设置环境信息
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
Multipart multipart = null;
BodyPart contentPart = null;
Transport transport = null;
try {
message.setFrom(from);//设置发件人
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(title);
multipart = new MimeMultipart();//设置附件
contentPart = new MimeBodyPart();
contentPart.setContent(text, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
message.setContent(multipart);
message.saveChanges();
transport = session.getTransport("smtp");
transport.connect("smtp.163.com", user, password);
transport.sendMessage(message, message.getAllRecipients());
} catch (MessagingException e) { e.printStackTrace();
}finally {
try {
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
} } }
5、测试发送邮件功能是否可用SendEmailTest:
注意:email.properties配置文件中的密码应该是客户端授权码,不是登录密码,设置位置如下: