JavaMail邮件发送在linux环境下不能发送的问题解决
2016-01-15 17:25
671 查看
今天做一个发送邮件的功能,在本机(Windows)环境下可以成功发送邮件,但部署到Linux服务器上后不能成功发送,也不提示错误。
通过修改代码,将方法 Session.getDefaultInstance() 改为 Session.getInstance(),具体如下:
getDefaultInstance() 和getInstance() 的应用:
session在创建时首先会去系统缓存文件中找是否有properties存在 ,如果存在则加载默认的properties ,如果不存在才加载用户自己定义的properties 。
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance
通过修改代码,将方法 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
相关文章推荐
- 虚拟机下centos 6.4安装超级详细图解教程(64位)
- How to install Mysql in the CentOS
- 使用 C++11 编写 Linux 多线程程序
- CentOS minimal版安装图形界面的步骤(自动获取IP)
- (转)Linux makefile 教程 非常详细,且易懂
- linux查看系统编码和修改系统编码的方法
- Linux vi 编辑器的使用
- 在Linux下使用iconv转换字符串编码
- Linux ssh/scp连接时避免输入yes(公钥验证)并防止出现POSSIBLE BREAK-IN ATTEM
- Redhat Linux 6.4 mail server configuration
- Linux环境变量配置和Android源码导入
- ACTIVITI在LINUX下查看流程图片中文字体出现乱码的解决方案
- U-boot mkimage指定Linux内核地址时的两种方式
- Linux下make与makefile
- linux ubuntu 下安装matlab2014a
- 解决linux下网页页面解析问题
- Linux压缩命名大全
- Linux基本命令――优化开机自动加载的服务
- Centos+Freeradius+Mysql+daloRADIUS进行ROS PPPOE验证(实验)
- Linux基础入门学习笔记二