当前位置:   article > 正文

阿里云ECS服务器无法使用25端口发送_阿里云ecs自建邮件服务器 25端口

阿里云ecs自建邮件服务器 25端口

在部署项目到阿里的ECS服务器上的时候,发现邮件无法发送,报出异常

原代码:

  1. public static void sendMail(String to,String code){
  2. try {
  3. // 获得连接:
  4. Properties props = new Properties(new InputStream);
  5. //用于发送邮件的邮箱账号密码
  6. props.put("username", "username@163.com");
  7. props.put("password", "password");
  8. //smtp传输协议
  9. props.put("mail.transport.protocol", "smtp" );
  10. //网易邮箱的smtp服务器地址
  11. props.put("mail.smtp.host", "smtp.163.com");
  12. //smtp端口
  13. props.put("mail.smtp.port", "25" );
  14. Session defaultInstance = Session.getDefaultInstance(props);
  15. // 构建邮件:
  16. Message message = new MimeMessage(defaultInstance);
  17. message.setFrom(new InternetAddress("sendName@163.com"));
  18. // 设置收件人:
  19. // TO:收件人 CC:抄送 BCC:暗送,密送.
  20. message.addRecipient(RecipientType.TO, new InternetAddress(to));
  21. // 主题:
  22. message.setSubject("邮件主题");
  23. // 正文和响应头
  24. message.setContent("正文", "text/html;charset=UTF-8");
  25. // 发送邮件:
  26. message.saveChanges();
  27. Transport transport = defaultInstance.getTransport("smtp");
  28. transport.connect(props.getProperty("mail.smtp.host"),props.getProperty("username"),props.getProperty("password"));
  29. transport.sendMessage(message,message.getAllRecipients());
  30. transport.close();
  31. } catch (MessagingException e) {
  32. e.printStackTrace();
  33. }
  34. }

抛出异常:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;


无法连接smtp.163.com和25端口

询问阿里云客服之后得知是为了防止垃圾邮件泛滥,关闭了25端口,并建议使用加密端口

由于加密端口使用的是ssl协议, 不能再使用上面的代码了

ssl协议需要加密的ssl连接,java提供了javax.net.ssl.SSLSocketFactory类,从类中获取加密的SSLSocket

代码:

  1. public static void sendMail(String to,String code) {
  2. Properties props = new Properties(new InputStream);
  3. props.put("username", "username@163.com");
  4. props.put("password", "password");
  5. //网易的smtp服务器地址
  6. props.put("mail.smtp.host", "smtp.163.com");
  7. //SSLSocketFactory类的端口
  8. props.put("mail.smtp.socketFactory.port", "465");
  9. //SSLSocketFactory类
  10. props.put("mail.smtp.socketFactory.class",
  11. "javax.net.ssl.SSLSocketFactory");
  12. props.put("mail.smtp.auth", "true");
  13. //网易提供的ssl加密端口,QQ邮箱也是该端口
  14. props.put("mail.smtp.port", "465");
  15. Session defaultInstance = Session.getDefaultInstance(props);
  16. try {
  17. Message message = new MimeMessage(session);
  18. message.setFrom(new InternetAddress("sendName@163.com"));
  19. message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
  20. message.setSubject("邮件标题");
  21. // 正文和响应头
  22. message.setContent("邮件主题", "text/html;charset=UTF-8");
  23. message.saveChanges();
  24. Transport transport = defaultInstance.getTransport("smtp");
  25. transport.connect(props.getProperty("mail.smtp.host"),props.getProperty("username"),props.getProperty("password"));
  26. transport.sendMessage(message,message.getAllRecipients());
  27. transport.close();
  28. } catch (MessagingException e) {throw new RuntimeException(e);}}
  29. 这样ssl加密协议的工具类就写好了,可以放在阿里云ecs服务端上成功运行了.


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/776882
推荐阅读
相关标签
  

闽ICP备14008679号