阿里云服务器JAVA发邮件25端口无法发送的解决办法

经过查询原因是因为阿里默认禁掉了25的端口,要申请开放比较麻烦.

解决办法: 使用465端口 

需要加红圈中的这行代码

final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    
    private boolean getAddressEmail(MailBody mailInfo) throws Exception{    
      // 判断是否需要身份认证    
      MailAuthenticator authenticator = null;    
      Properties pro = mailInfo.getProperties();   
      pro.put("mail.smtp.socketFactory.class", SSL_FACTORY); //SSL的方式发送
      if (mailInfo.isValidate()) {    
      // 如果需要身份认证,则创建一个密码验证器    
        authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());    
      }   
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
     // logBefore(logger, "构造一个发送邮件的session");
      
      // 根据session创建一个邮件消息    
      Message mailMessage = new MimeMessage(sendMailSession);    
      // 创建邮件发送者地址    
      Address from = new InternetAddress(mailInfo.getFromAddress());    
      // 设置邮件消息的发送者    
      mailMessage.setFrom(from);    
      // 创建邮件的接收者地址,并设置到邮件消息中    
      // Address to = new InternetAddress(mailInfo.getToAddress());  
      //mailMessage.setRecipient(Message.RecipientType.TO,to);  
      
      Address[] to = new InternetAddress().parse(mailInfo.getToAddress()); //这里是发送给多个用户多个用户用都好分割[email protected],[email protected]
      mailMessage.setRecipients(Message.RecipientType.TO,to);
      
      if(!StringUtils.isEmpty(mailInfo.getToccAddress())) {
          Address[] tocc = new InternetAddress().parse(mailInfo.getToccAddress()); //这里是发送给多个用户多个用户用都好分割[email protected],[email protected]
          mailMessage.setRecipients(Message.RecipientType.CC,tocc);
      }
      // 设置邮件消息的主题    
      mailMessage.setSubject(mailInfo.getSubject());    
      // 设置邮件消息发送的时间    
      mailMessage.setSentDate(new Date());    
      // 设置邮件消息的主要内容    
      String mailContent = mailInfo.getContent();    
      mailMessage.setText(mailContent);    
      // 发送邮件    
      Transport.send(mailMessage); 
      System.out.println("发送成功!");
      return true;    
    }   

 注意只需要加如下2行代码才能使用465端口

final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

pro.put("mail.smtp.socketFactory.class", SSL_FACTORY); //SSL的方式发送

猜你喜欢

转载自blog.csdn.net/JqueryTomcat/article/details/88962921
今日推荐