/**
* 邮件工具类
* User: NZG
* Date: 2019/3/8
* Time: 12:25
**/
@Data
@Component
@Configuration
@ConfigurationProperties(prefix = "email")
//@PropertySource("classpath:config/application.properties")
public class EmailConfig { private String myEmailAccount; // 发件人 账号 private String myEmailPassword; //密码,是你自己的设置的授权码 private String email163SmtpHost; // SMTP服务器(这里用的163 SMTP服务器) private String smtp163Port;// 端口号,这个是163使用到的;QQ的应该是465或者875 }

# 邮件发送 (网易)
email.myEmailAccount=17719@163.com
email.myEmailPassword=ng87187  
email.email163SmtpHost=smtp.163.com
email.smtp163Port=25  

  

 @Autowired
 private EmailConfig emailConfig;
public ResponseResult<String> sendEmail(SendEmailCodeReqVO vo) {
try {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = new Properties();
props.setProperty("mail.smtp.host", emailConfig.getEmail163SmtpHost());
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", emailConfig.getSmtp163Port());
props.setProperty("mail.smtp.socketFactory.port", emailConfig.getSmtp163Port());
props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailConfig.getMyEmailAccount(),
emailConfig.getMyEmailPassword());
}}); session.setDebug(true);
MimeMessage message = new MimeMessage(session);
// 收件人
message.setRecipients(Message.RecipientType.TO, vo.getReceiveEmailAccount());
// 发件人
message.setFrom(new InternetAddress(emailConfig.getMyEmailAccount()));
//短信发送类型
Integer type = vo.getType();
EmailSendType sms = EmailSendType.getSmsEnumByType(type);
// 内容(这个内容还不能乱写,有可能会被SMTP拒绝掉;多试几次吧)
String msg = "";
String pwd = PassWordUtils.editPassword();
switch (sms) {
case FORGET_PWD:
msg = MessageFormat.format(PatientConstants.EMAIL_MESSAGE_PROMPT, pwd);
break;
default:
break;
}
message.setSubject("辅助系统随机密码");
message.setContent(msg, "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
Transport.send(message);
//根据邮箱修改密码
UserPraient user = userHandler.getUserByEmail(vo.getReceiveEmailAccount());
if(user==null){
return ResponseResult.failNotice(PatientSystemCode.USER_REG_REEOR.msg());
}
user.setUserPassword(PassWordUtils.entryptPassword(pwd));
userHandler.editUserPassword(user);
} catch (MessagingException e) {
e.printStackTrace();
return ResponseResult.failNotice(PatientSystemCode.MAIL_DELIVERY_FAILED.msg());
}
return ResponseResult.success();
}

阿里云服务器发送邮件失败,25端口被禁用,采用ssl 方式 465端口发送的更多相关文章

  1. 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )

    我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...

  2. 阿里云服务器 通过JavaMail发送邮箱STMP问题 25端口被禁用 使用SSL协议465端口

    1 问题描述 我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JD ...

  3. 阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110]

    阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110] 一.总 ...

  4. 阿里云ECS发送邮件失败

    阿里云发送SMTP邮件失败   N多测试发现 阿里云服务器不能用25端口发邮件,配置465端口阿里云发送邮件是成功的 修改mail.rc 里的smtp 端口为465 配置如下 set from=*** ...

  5. c#阿里云服务器发送邮件

    public static void SendMailUse() { string host = "smtp.lotusest.com";// 邮件服务器smtp.163.com表 ...

  6. 阿里云服务器用smtp发送邮件返失败

    阿里云使用SMTP发送邮件失败,因为阿里云服务器屏蔽了25端口,所以发送不成功,解决办法改用587发送QQ邮件,且必须使用SSL,否则不成功. 经测试QQ的465,995不能使用. https://b ...

  7. 阿里云服务器 centos7 中继邮箱+转发服务 详细配置

    阿里云centos7 邮箱转发服务配置 一.文档编写目的: 网络拓扑图: 阿里云服务器屏蔽掉25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使 ...

  8. 2、阿里云ECS发送邮件到腾讯企业邮箱(ECS默认不开启25端口)

    阿里云ECS默认禁用25端口导致发邮件失败. 方法一: 使用shell脚本发送邮件,需要配置mailx 1.安装软件 yum install mailx 2.配置 vim /etc/mail.rc在文 ...

  9. 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)

    通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...

随机推荐

  1. (1-3)line-height与图片的表现

    (1-3)line-height与图片的表现 这篇文章真的很重要,耐心看,重中之重. 一.行高和图片的表现 图片和行高有什么歪腻呢?? 很多人不明白,为什么我图片好好的放在一个标签里面它就出现了如下问 ...

  2. js表单快速取值/赋值 快速生成下拉框

    1.表单取值/赋值公共方法 //表单序列化:文本框的name字段和数据源一致<form id="myForm" onsubmit="return false;&qu ...

  3. 关于Array的操作

    使用Array创建数组 // 使用Array 构造函数 var colors = new Array(); // 预先给数组项数量 var colors = new Array(20); // 向Ar ...

  4. MySQL数据库(3)----设置和使用自定义变量

    MySQL支持定义自己的变量.这些变量可以被设置为查询结果,这使我们可以方便地把一些值存储起来供今后查询使用. ; +-----------------+ | @HisName:= name | +- ...

  5. Git学习-Git时光机之版本回退(二)

    Git,是Linus花了两周时间用C写的一个分布式版本控制系统.牛人该怎么定义? 零.结论先行 倒叙总结一下: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git ...

  6. mysql 链接报 Can't connect to MySQL server on 'localhost' (10061)

    之前好好的,重启了下电脑就报了上面的问题... 解决办法很简单:重启下mysql的服务: win7系统,电脑-管理-服务和应用程序-服务,找到mysql重启 即可.

  7. Linux 命令备忘(持续更新中……)

    Linux命令 grep 1. 使用grep 筛选内容,多条件筛选用 grep - E "条件1|条件2" (满足条件1或条件2的均展示) 2. grep '条件3'|grep - ...

  8. Echarts实现隐藏x轴,y轴,刻度线,网格

    "yAxis": [ { //就是一月份这个显示为一个线段,而不是数轴那种一个点点 "show" : true, "boundaryGap" ...

  9. C# mvc读取模板并修改上传到web

    C# mvc读取模板并修改上传到web 后台: public FileResult GetXls() { FileStream fs = new FileStream(System.Web.HttpC ...

  10. DFS BFS代码

    #define maxnum 30 #include<bits_stdc++.h> int visited[maxnum]={0}; using namespace std; typede ...