SpringBoot实现邮件发送的示例代码

网友投稿 295 2022-08-15


SpringBoot实现邮件发送的示例代码

工具类:

package com.lhh.utils;

import com.lhh.bean.EmailEntity;

import javax.mail.*;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Properties;

/**

* @author liuhuanhuan

* @version 1.0

* @date 2021/4/26 20:51

*/

public class MailSenderUtil {

//建立服务器的邮件连接,从而可以进行发送邮件

public static Session getMailSession(EmailEntity emailEntity){

//0.1 确定连接位置

Properties properties = new Properties();

//获取163邮箱smtp服务器的地址,

properties.setProperty("mail.host", emailEntity.getHost());

//是否进行权限验证。

properties.setProperty("mail.smtp.auth", emailEntity.getAuth());

//0.2确定权限(账号和密码)

Authenticator authenticator = new Authenticator() {

@Override

public PasswordAuthentication getPasswordAuthentication() {

//填写自己的163邮箱的登录帐号和授权密码(不是登录密码)。

return new PasswordAuthentication(emailEntity.getUserName(),emhttp://ailEntity.getPassword());

}

};

//1 获得连接

/**

* properties:包含配置信息的对象,Properties类型

* 配置邮箱服务器地址、配置是否进行权限验证(帐号密码验证)等

*

* authenticator:确定权限(帐号和密码)

*

* 所以就要在上面构建这两个对象。

*/

Session session = Session.getDefaultInstance(properties, authenticator);

return session;

}

/**

* 指定一个人发送邮件,单个发送

* @Param toEmailAddress 单个接受邮件的邮箱地址

* @Param title 主题

* @Param content 内容

**/

public static void sendMailTOSingleUser(EmailEntity emailEntity){

//获得邮箱服务器的连接

Session session = getMailSession(emailEntity);

//2 创建消息

Message message = new MimeMessage(session);

// 2.1 发件人 我们自己的邮箱地址,就是名称

try {

message.setFrom(new InternetAddress(emailEntity.getUserName()));

/**

* 2.2 收件人

* 第一个参数:

* RecipientType.TO 代表收件人

http:// * RecipientType.CC 抄送

* RecipientType.BCC 暗送

* 比如A要给B发邮件,但是A觉得有必要给要让C也看看其内容,就在给B发邮件时,

* 将邮件内容抄送给C,那么C也能看到其内容了,但是B也能知道A给C抄送过该封邮件

* 而如果是暗送(密送)给C的话,那么B就不知道A给C发送过该封邮件。

* 第二个参数

* 收件人的地址,或者是一个Address[],用来装抄送或者暗送人的名单。或者用来群发。可以是相同邮箱服务器的,也可以是不同的

* 这里我们发送给我们的qq邮箱

*/

message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(emailEntity.getToList().get(0)));

//设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件

message.setRecipient(Message.RecipientType.CC, new InternetAddress(emailEntity.getUserName()));

// 2.3 主题(标题)

message.setSubject(emailEntity.getSubject());

//设置编码,防止发送的内容中文乱码。

message.setContent(emailEntity.getContext(), "text/html;charset=UTF-8");

//3发送消息

Transport.send(message);

} catch (MessagingException e) {

e.printStackTrace();

}

}

/**

* 群发邮件,也可以只发一个人。可设置主题和邮件内容,无附件

* @Param toEmailAddressArray 接受邮件的所有邮箱地址

* @Param title 主题

* @Param content 内容

**/

public static void sendMailToUserArray(EmailEntity emailEntity) {

String[] toEmailAddressArray = (String[]) emailEntity.getToList().toArray(new String[0]);

//获得邮箱服务器的连接

Session session = getMailSession(emailEntity);

//2 创建消息

Message message = new MimeMessage(session);

// 2.1 发件人 我们自己的邮箱地址,就是名称

try {

message.setFrom(new InternetAddress(emailEntity.getUserName()));

if (toEmailAddressArray != null) {

// 为每个邮件接收者创建一个地址

Address[] toEmailRecipients = null;

toEmailRecipients = new InternetAddress[toEmailAddressArray.length];

for (int i = 0; i < toEmailAddressArray.length; i++) {

toEmailRecipients[i] = new InternetAddress(toEmailAddressArray[i]);

}

message.setRecipients(MimeMessage.RecipientType.TO, toEmailRecipients);

}

ImLnTIh //设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件

message.setRecipient(Message.RecipientType.CC, new InternetAddress(emailEntity.getUserName()));

// 2.3 主题(标题)

message.setSubject(emailEntity.getSubject());

//设置编码,防止发送的内容中文乱码。

message.setContent(emailEntity.getContext(), "text/html;charset=UTF-8");

//3发送消息

Transport.send(message);

} catch (MessagingException ex) {

ex.printStackTrace();

}

}

}

邮件实体类:

package com.lhh.bean;

import java.io.Serializable;

import java.util.ArrayList;

public class EmailEntity implements Serializable {

private static final long serialVersionUID = 1L;

//邮箱服务器地址

private String host;

//主机端口

private Integer port;

//发送者的邮箱账号

private String userName;

//发送者的密码

private String password;

//发送者的邮箱地址

private String fromAddress;

//接收者的邮箱地址

private ArrayList toList;

//设置邮件主题

private String subject;

//设置邮件内容

private String context;

//设置邮件类型

private String contextType;

//设置是否需要验证

private String auth;

public String getAuth() {

return auth;

}

public void setAuth(String auth) {

this.auth = auth;

}

public String getHost() {

return host;

}

public void setHost(String host) {

this.host = host;

}

public Integer getPort() {

return port;

}

public void setPort(Integer port) {

this.port = port;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getFromAddress() {

return fromAddress;

}

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

public ArrayList getToList() {

return toList;

}

public void setToList(ArrayList toList) {

this.toList = toList;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContext() {

return context;

}

public void setContext(String context) {

this.context = context;

}

public String getContextType() {

return contextType;

}

public void setContextType(String contextType) {

this.contextType = contextType;

}

}

邮件常量类:

public class MailConst {

//你的进行发送邮件的邮箱

public static final String USER_NAME = "xxxx";

//授权密码

public static final String PWD_CODE = "xxxxx";

public static final String MAIL_HOST = "smtp.163.com";

public static final String MAIL_SMTP_AUTH = "true";

//邮件主题

public static final String NOTIFICATION_MAIL_TITLE = "测试邮件";

//邮件内容

public static final String NOTIFICATION_MAIL_CONTENT = "你好,你有一个新的通知,请前往手机端进行查看!";

}

测试邮件:

public class TestMail {

public static void main(String[] args) {

EmailEntity emailEntity = new EmailEntity();

ArrayList emailArray = new ArrayList<>();

//测试,收取邮件的邮箱,可以填写自己的发送邮件的邮箱

emailArray.add("xxxx@qq.com");

emailEntity.setToList(emailArray);

emailEntity.setSubject(MailConst.NOTIFICATION_MAIL_TITLE);

emailEntity.setContext(MailConst.NOTIFICATION_MAIL_CONTENT);

emailEntity.setUserName(MailConst.USER_NAME);

emailEntity.setAuth(MailConst.MAIL_SMTP_AUTH);

emailEntity.setPassword(MailConst.PWD_CODE);

emailEntity.setHost(MailConst.MAIL_HOST);

MailSenderUtil.sendMailToUserArray(emailEntity);

// MailSenderUtil.sendMailTOSingleUser(emailEntity);

}

}

测试发送结果页面:

以上就是SpringBoot实现邮件发送的示例代码的详细内容,更多关于SpringBoot邮件发送的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈Java中的桥接方法与泛型的逆变和协变
下一篇:java如何实现获取客户端ip地址的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~