/**
* 邮件工具类
* 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. RoadFlowCore工作流2.8.1 更新日志

    1.2.8.1更新了2.8刚发布的一些小BUG. 2.2.8.1增加了移动端,基于微信企业号或企业微信. 详细请参阅官方网站:roadflow.net

  2. 【网络编程】TCP网络编程

    TCP网络程序设计 一.模型函数化 图片:TCP编程模型 1.1 创建套接字Socket #include <sys/types.h> /* See NOTES */ #include & ...

  3. SQL Server ->> PARSE函数

    这个函数和TRY_PARSE一起从SQL Server 2012引入.它的存在是因为TRY_PARSE一旦遇到无法成功转换就会以NULL值返回,而如果你希望以报错的形式,你就可以用PARSE. 比如 ...

  4. LeetCode-Subsets ZZ

    LeetCode:Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in ...

  5. 爬虫入门之Scrapy框架实战(新浪百科豆瓣)(十二)

    一 新浪新闻爬取 1 爬取新浪新闻(全站爬取) 项目搭建与开启 scrapy startproject sina cd sina scrapy genspider mysina http://roll ...

  6. 证书制作 z

    一.WCF中的安全方式 说到安全就会涉及到认证,消息一致性和机密性,WCF的安全方式分为两种,即传输安全和消息安全. 传输安全和消息安全的区别:传输安全提供点对点的安全: 比如 A 提供服务,B和C直 ...

  7. 【Leetcode】【Medium】Gray Code

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  8. 配置docker容器上ssh无密登录

    配置docker容器上ssh无密登录 1.修改所有容器中root账户密码 ssh到远程主机时,首次需要密码访问,因此需要修改root账号密码. 密码必须要8位以上字母数字混合. $>passwd ...

  9. C++使用BOOST操作文件、目录

    开始使用 在BOOST库出现之前,C++对于文件和目录的操作,大都借助于UNIX提供的底层文件和目录接口,从使用角度来看,这些底层的操作不够友好.BOOST中filesystem库是一种可移植的文件系 ...

  10. 用jquery实现的简单数据双向绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...