在web中完成邮件的发送:
1、导包:需要pom.xml中导入所需依赖包(mail 1.4.7 activation 1.1.1)
javax.mail
1.4.7
javax.activation
activation
1.1.1
2、创建Email信息封装类:(属性的get/set等方法略)
packagecom.example.demo.util;/***@author* @DESC: 用于封装用户邮箱信息
* @create 2021/1/10 13:44*/
public classUserMailInfo {/*** 发送给email这个邮箱*/
privateString email;/*** 邮件标题*/
privateString title;/*** 邮件文本内容*/
privateString context;publicUserMailInfo(String email,String title,String context) {this.email =email;this.context =context;this.title =title;
}publicUserMailInfo(){
}}
3、创建邮件发送的工具类:(我继承了Thread类用于每一封邮件都创建一个线程来进行邮件的发送)
packagecom.example.demo.util;import javax.mail.*;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;importjava.util.Properties;/***@author* @DESC: 邮件发送工具类
* @create 2021/1/10 13:46*/
public class SendMail extendsThread{private static final String SEND_EMAIL = "用于发送邮件的邮箱";private static final String SEND_USERNAME = "与上面的邮箱一致";private static final String SEND_PASSWORD = "一般为邮箱SMTP服务的授权码";private static final String HOST = "邮箱服务器地址(可在邮箱查看各自邮箱的服务器地址)";privateUserMailInfo mailInfo;publicSendMail(UserMailInfo mailInfo){this.mailInfo =mailInfo;
}
@Overridepublic voidrun() {
sendMail();
}/*** 邮箱服务器的连接和发送*/
private voidsendMail(){try{
Properties prop= newProperties();
prop.setProperty("mail.host",HOST);
prop.setProperty("mail.transport.protocol","smtp");
prop.setProperty("mail.smtp.auth","true");
Session session=Session.getInstance(prop);//日志输出邮件发送详情
session.setDebug(true);
Transport ts=session.getTransport();
ts.connect(HOST,SEND_USERNAME,SEND_PASSWORD);
Message message=createMail(session);
ts.sendMessage(message,message.getAllRecipients());
ts.close();
}catch(Exception e){
//异常处理
e.printStackTrace();
}
}/*** 封装message属性
*@paramsession session
*@returnMessage message
*@throwsException 异常抛出*/
private Message createMail(Session session) throwsException{
MimeMessage message= newMimeMessage(session);
message.setFrom(newInternetAddress(SEND_EMAIL));
message.setRecipient(Message.RecipientType.TO,newInternetAddress(mailInfo.getEmail()));
message.setSubject(mailInfo.getTitle());
message.setContent(mailInfo.getContext(),"text/html;charset=utf-8");
message.saveChanges();returnmessage;
}
}
4、调用邮件发送的工具类方法(在适当的业务逻辑处调用)
UserMailInfo mailInfo = new UserMailInfo("104******@qq.com","测试邮件","邮件发送成功");
SendMail sendMail = new SendMail(mailInfo);
sendMail.start();
5、注意:1、有的邮箱服务器配置了SSL加密则有一个端口号参数,则需要在对应的位置进行修改。
2、用什么邮箱发送邮箱那么就去找对应的邮箱服务器地址,以及开启对应的相关服务。
3、本文只是做一个简单邮箱发送的记录,用于方便查看。