阿里云 Centos tomcat 中无法发送邮件问题

0. MyEclipse 中可以发送成功,本地window下的tomcat 中发送不成功。原因是MyEclipse 的JavaEE 7.0 框架中自带了javax.mail.jar(内部包名是com.sun.mail) 包,导出的war不包含该jar。依赖mail.jar 即可。可以去Maven repository 中下载该包。

包下载地址:http://mvnrepository.com/artifact/com.sun.mail/javax.mail

 

1. 首先阿里云中的linux系统是精简版,没有域名解析。所以使用邮件服务器时使用IP而不使用域名,即将stmp.163.com换成对于的IP地址为:220.181.12.15。

修改完这个再去远程服务器上测试仍然发送邮件不成功。

2.网上说是阿里云屏蔽了25端口的使用。将邮件改为使用465端口后,邮件发送成功。

以下为使用465端口发送成功的配置

private static final String EMAIL_SMTP_HOST="220.181.12.15"; // smtp.163.com 该域名的IP
public   void sendEmail(String toEmail,String subject,String content)
{
    final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
    final Properties props = new Properties();
    //设置发送邮件的邮件服务器的属性
    props.put("mail.smtp.host", EMAIL_SMTP_HOST); //指定SMTP服务器
    //需要经过授权,也就是用户名和密码的效验,这样才能通过验证(一定要有这一条)
    props.put("mail.smtp.auth","true"); //指定是否需要SMTP验证 
    props.put("mail.smtp.user", EMAIL_USER);

    //ssl验证时加的
    props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
    props.setProperty("mail.smtp.socketFactory.fallback", "false");
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.socketFactory.port", "465"); //使用ssl后的端口,默认一般是25
    props.put("mail.smtp.starttls.enable", "false"); //这句很重要的样子
    props.put("mail.smtp.ssl.trust", EMAIL_SMTP_HOST); 

    Authenticator authenticator= new Authenticator() {
		@Override
		protected PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(EMAIL_USER, EMAIL_PASSWORD);
		}
	};
    Session mailSession = Session.getInstance(props, authenticator);
    //有了这句话便可以在发送邮件的过程中在console处显示过程信息,供调试使用
    mailSession.setDebug(false); 
    
    //省略发送代码。。。
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值