*初学SSM,记录一下开发项目中遇到的问题。
一、问题描述
最近在写一个项目,有和发送邮件相关的需求。
- 用户修改密码时,发送验证码;
- 用户创建会议时,给其他用户发送邀请邮件。
简单来说,都是需要发邮件。同时,为了美化邮件内容的形式,发送的内容需用到HTML
。
二、解决方案
参考了几篇博客,部分链接找不到了。获取STMP
授权码的具体过程请看这篇1,此处不作赘述。
注意,需要导入commons-mail
的jar
包。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
三、完整代码
放一下工具类的代码。
package com.hua.utils;
import java.util.Random;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
public class EmailUtils {
private static String fromEmail="xxx@qq.com";//发送邮箱
private static String fromPassword="xxx";//授权码、
private static String fromEmailName="xxx";//发送邮箱名字
//发送Html的Email
public static boolean sendHtmlEmail(String email,String emailTitle,String emailContent) {
HtmlEmail send = new HtmlEmail();//创建一个HtmlEmail实例对象
try {
send.setHostName("smtp.qq.com"); //SMTP发送服务器
send.setAuthentication(fromEmail,fromPassword);//发件人在邮件服务器上的注册名称和密码
send.setFrom(fromEmail, fromEmailName);//发送人的邮箱
//send.setSmtpPort(465); //端口号 可以不开
send.setSSLOnConnect(true); //开启SSL加密
send.setCharset("utf-8");
send.addTo(email); //设置收件人 email为你要发送给谁的邮箱账户 上方参数
send.setSubject(emailTitle); //邮箱标题
send.setMsg(emailContent); //Eamil发送的内容
send.send(); //发送
return true;
} catch (EmailException e) {
e.printStackTrace();
}
return false;
}
//发送邀请邮件
public static boolean sendInvitation(String email, String meetingNum) {
String emailTitle="您的好友向您发送一条会议邀请!";
String emailContent="xxx";//邮件内容,即HTML代码
return EmailUtils.sendHtmlEmail(email,emailTitle,emailContent);
}