linux mail java 失败,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值