JavaMail邮件发送在linux环境下不能发送的问题解决

今天做一个发送邮件的功能,在本机(Windows)环境下可以成功发送邮件,但部署到Linux服务器上后不能成功发送,也不提示错误。

通过修改代码,将方法 Session.getDefaultInstance()  改为  Session.getInstance(),具体如下:

public class SimpleMailSender {
    public SimpleMailSender() {
    }
    public boolean sendTextMail(MailSenderInfo mailInfo) {  
           System.out.println("555555!");
         // 判断是否需要身份认证   
         MyAuthenticator authenticator = null;   
         Properties pro = mailInfo.getProperties();  
         if (mailInfo.isValidate()) {   
         // 如果需要身份认证,则创建一个密码验证器   
           authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
         }  
         // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
//         Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
           Session sendMailSession = Session.getInstance(pro,authenticator); 
         try {   
         // 根据session创建一个邮件消息   
         // 创建邮件发送者地址   
         Address from = new InternetAddress(mailInfo.getFromAddress());   
         // 设置邮件消息的发送者   
         mailMessage.setFrom(from);  
         // 创建邮件的接收者地址,并设置到邮件消息中   
         Address to = new InternetAddress(mailInfo.getToAddress());   
         mailMessage.setRecipient(Message.RecipientType.TO,to);   
         // 设置邮件消息的主题   
         mailMessage.setSubject(mailInfo.getSubject());   
         // 设置邮件消息发送的时间   
         mailMessage.setSentDate(new Date());   
         // 设置邮件消息的主要内容   
         String mailContent = mailInfo.getContent();   
         mailMessage.setText(mailContent);   
         // 发送邮件   
         Transport.send(mailMessage);  
         return true;   
         } catch (MessagingException ex) {   
             ex.printStackTrace();   
         }   
         return false;   
       }   
}

getDefaultInstance() 和getInstance() 的应用:

session在创建时首先会去系统缓存文件中找是否有properties存在 ,如果存在则加载默认的properties ,如果不存在才加载用户自己定义的properties 。
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值