配置邮箱授权码 参考 /m0_58111460/article/details/124739059
代码模块
实体分为授权跟参数
//授权实体
@Data
public class NetEaseEmailAuthorization {private String sendEmail;//开启授权码的邮箱private String authorizationCode;//授权码private String smtpEmail; //SMTP服务器地址: }
参数实体
@Data
public class NetEaseEmailMsgData {// 发送人或者公司private String personal;//接收人邮箱地址private String receiveEmail;//邮件标题private String title;// 邮件内容private String content;}
调用类
@Component@Slf4jpublic class NetEaseEmailSendMsgHnadle {public void sendMsgOne(NetEaseEmailAuthorization emailAuthorization, NetEaseEmailMsgData emailMsgData){NetEaseEmailUtil.send(emailAuthorization,emailMsgData);}public void sendMsgBatch(NetEaseEmailAuthorization emailAuthorization, List<NetEaseEmailMsgData> emailMsgData){emailMsgData.stream().forEach(s->{NetEaseEmailUtil.send(emailAuthorization,s);});}}
发送工具类
import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.util.Properties;public class NetEaseEmailUtil {public static void send(NetEaseEmailAuthorization authorization, NetEaseEmailMsgData msgData){try {//创建连接邮件服务器的参数配置Properties props = new Properties();// 参数配置props.setProperty("mail.smtp.host", authorization.getSmtpEmail());// 发件人的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true");// 需要请求认证props.setProperty("mail.transport.protocol", "smtp");//根据配置创建会话对象和邮件服务器交互Session session = Session.getInstance(props);session.setDebug(true);// 设置为debug模式, 可以查看详细的发送日志//创建邮件MimeMessage message = createEmail(session, authorization.getSendEmail(), msgData);//使用Session获取邮件传输对象Transport transport = session.getTransport();//使用邮箱账号和密码连接邮件服务器transport.connect(authorization.getSendEmail(), authorization.getAuthorizationCode());//发送邮件transport.sendMessage(message, message.getAllRecipients());//关闭连接transport.close();}catch (Exception e){e.printStackTrace();}}/**** 创建邮件** */public static MimeMessage createEmail(Session session, String sendMail, NetEaseEmailMsgData msgData ) throws Exception {//创建一封邮件MimeMessage message = new MimeMessage(session);//发件人message.setFrom(new InternetAddress(sendMail, msgData.getPersonal(), "UTF-8"));//收件人message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(msgData.getReceiveEmail(), "", "UTF-8"));//邮件主题message.setSubject(msgData.getTitle(), "UTF-8");//邮件正文message.setContent(msgData.getContent(), "text/html;charset=UTF-8");//设置发件时间message.setSentDate(new Date());//保存设置message.saveChanges();return message;}}
调用 在使用类里面注入方法 组装参数调用
@Autowired
privite NetEaseEmailSendMsgHnadle netEaseEmailSendMsgHnadle;
NetEaseEmailAuthorization emailAuthorization = new NetEaseEmailAuthorization();//自行装配邮箱授权参数NetEaseEmailMsgData emailMsgData = new NetEaseEmailMsgData();//自行组装发送参数emailMsgData.setTitle("");emailMsgData.setContent("");netEaseEmailSendMsgHnadle.sendMsgOne(emailAuthorization,emailMsgData);
示例