工具类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
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(),emailEntity.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 代表收件人 * 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);
} //设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件 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(); } } } |
邮件实体类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
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<String> 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<String> getToList() { return toList; }
public void setToList(ArrayList<String> 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; } } |
邮件常量类:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 = "你好,你有一个新的通知,请前往手机端进行查看!" ; } |
测试邮件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class TestMail {
public static void main(String[] args) { EmailEntity emailEntity = new EmailEntity(); ArrayList<String> 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邮件发送的资料请关注其它相关文章!
原文链接:https://blog.csdn.net/qq_38140292/article/details/123997296
查看更多关于SpringBoot实现邮件发送的示例代码的详细内容...