邮箱工具类
parent
30b8661f3e
commit
83e6a80e1f
|
|
@ -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<UserDto> 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<to.length;i++){
|
||||
//System.out.println("发送到:" + to[i]);
|
||||
sendTo[i] = new InternetAddress(to[i]);
|
||||
}
|
||||
|
||||
//传入收件人
|
||||
message.setRecipients(Message.RecipientType.TO,sendTo);
|
||||
//设置邮件的主题
|
||||
message.setSubject(title);
|
||||
//设置邮件的文本
|
||||
String content=msg;
|
||||
message.setContent(content,"text/html;charset=UTF-8");
|
||||
//设置时间
|
||||
message.setSentDate(new Date());
|
||||
message.saveChanges();
|
||||
//发送邮件
|
||||
Transport.send(message);
|
||||
|
||||
System.out.println("发送成功!");
|
||||
|
||||
return ApiResult.success("邮件发送成功","");
|
||||
}catch(Exception e){
|
||||
System.out.println("异常:"+e.toString());
|
||||
return ApiResult.fail(400,"验证码发送失败:邮箱账号密码错误","");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static ApiResult sendNodecrypPwd(UserDto userDto,String title,String msg,String[] to){
|
||||
try{
|
||||
|
||||
//设置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.getDefaultInstance(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<to.length;i++){
|
||||
//System.out.println("发送到:" + to[i]);
|
||||
sendTo[i] = new InternetAddress(to[i]);
|
||||
}
|
||||
|
||||
//传入收件人
|
||||
message.setRecipients(Message.RecipientType.TO,sendTo);
|
||||
//设置邮件的主题
|
||||
message.setSubject(title);
|
||||
//设置邮件的文本
|
||||
String content=msg;
|
||||
message.setContent(content,"text/html;charset=UTF-8");
|
||||
//设置时间
|
||||
message.setSentDate(new Date());
|
||||
message.saveChanges();
|
||||
//发送邮件
|
||||
Transport.send(message);
|
||||
|
||||
System.out.println("发送成功!");
|
||||
return ApiResult.success("邮件发送成功","");
|
||||
}catch(Exception e){
|
||||
System.out.println("异常:"+e.toString());
|
||||
return ApiResult.fail(400,"验证码发送失败:邮箱账号密码错误","");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static String meetingEmail = "<p> 您好!</p ><p> " +
|
||||
"XXX邀请你参加 (会议主题) ,本次会议在(会议地点+线上ID)召开,开始时间,预计 X小时,请安排好工作时间,准时参加会议。</p ><p>" +
|
||||
" 会议组织人:XXX<br/></p ><p> </p ><p> <br/></p >";
|
||||
}
|
||||
Loading…
Reference in New Issue