diff --git a/youchain-system/src/main/java/com/youchain/utils/Email/EmailUtils.java b/youchain-system/src/main/java/com/youchain/utils/Email/EmailUtils.java new file mode 100644 index 0000000..24c5c81 --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/utils/Email/EmailUtils.java @@ -0,0 +1,189 @@ +package com.youchain.utils.Email; + +import com.youchain.config.RsaProperties; +import com.youchain.exception.handler.ApiResult; +import com.youchain.modules.system.service.dto.UserDto; +import com.youchain.modules.system.service.dto.UserQueryCriteria; +import com.youchain.modules.system.service.impl.UserServiceImpl; +import com.youchain.utils.RsaUtils; +import com.youchain.utils.SecurityUtils; +import com.youchain.utils.SpringContextHolder; +import com.youchain.utils.UserUtils; + +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.security.Security; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +public class EmailUtils { + + /**** + * 发送邮件(当前登录用户) + * @param title + * @param msg + * @param to + * @return + */ + public static ApiResult sendByCurrUser(String title,String msg,String[] to){ + try{ + //*****获取当前登录用户 + Long userID =SecurityUtils.getCurrentUserId(); + UserServiceImpl userService = SpringContextHolder.getBean(UserServiceImpl.class); + UserQueryCriteria userQueryCriteria =new UserQueryCriteria(); + userQueryCriteria.setId(userID); + List users=userService.queryAll(userQueryCriteria); + if(users.size()<=0){ + return ApiResult.fail(400,"用户验证失败",""); + } + UserDto userDto=users.get(0); + ApiResult re_str=send(userDto,title,msg,to); + return re_str; + }catch(Exception e){ + System.out.println("异常:"+e.toString()); + return ApiResult.fail(400,"验证码发送失败:邮箱账号密码错误",""); + } + } + + + public static ApiResult send(UserDto userDto,String title,String msg,String[] to){ + try{ + String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,userDto.getEmailPwd()); + userDto.setEmailPwd(password); + System.out.println(password); + //设置SSL连接、邮件环境 + Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); + final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; + Properties props = System.getProperties(); + //协议 + //props.setProperty("mail.transport.protocol", "smtp"); + + props.setProperty("mail.smtp.host", "smtp.mxhichina.com");//smtp服务器地址 + //props.setProperty("mail.smtp.port", "25");//非加密端口 + // 使用ssl加密方式,进行如下配置: + props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); + props.setProperty("mail.smtp.socketFactory.fallback", "false"); + props.setProperty("mail.smtp.socketFactory.port", "465"); + + props.setProperty("mail.smtp.auth", "true");//表示SMTP发送邮件,需要进行身份验证 + props.setProperty("mail.smtp.from", userDto.getEmail());//mailfrom 参数 + props.setProperty("mail.user",userDto.getEmail());//发件人的账号 + props.setProperty("mail.password",userDto.getEmailPwd());// 发件人的账号的密码,如果开启三方客户端安全密码请使用新生产的密码 + //建立邮件会话 + Session session = Session.getInstance(props, new Authenticator() { + //身份认证 + protected PasswordAuthentication getPasswordAuthentication() { + //发件人的账号、密码 + String userName = props.getProperty("mail.user"); + String password = props.getProperty("mail.password"); + return new PasswordAuthentication(userName, password); + } + }); + //建立邮件对象 + MimeMessage message = new MimeMessage(session); + //设置邮件的发件人 + InternetAddress from = new InternetAddress(userDto.getEmail(),userDto.getEmail()); //from 参数,可实现代发,注意:代发容易被收信方拒信或进入垃圾箱。 + message.setFrom(from); + //设置邮件的收件人 + //to = new String []{"768863620@qq.com"};//收件人列表 + InternetAddress[] sendTo = new InternetAddress[to.length]; + for (int i=0;i

" + + "    会议组织人:XXX

    

    

"; +}