解决项目部署到阿里云服务器邮件发送失败的方法

阿里云服务器禁用了25端口,所以改为465端口采用SSL协议传输邮件

163网易免费邮箱相关服务器信息:



相关代码:

package com.yc.util;


import java.io.File;
import java.util.Properties;
import java.util.Random;


import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.http.HttpSession;


public class SendEmailUtil
{
   public  int sendEmail(String reperson,HttpSession sessions)
  
   {
	   int result=0;
	      // 收件人电子邮箱
	      String to = reperson;
	 
	      // 发件人电子邮箱
	      String from = "你的真实邮箱地址";
	 
	      // 指定发送邮件的主机为 smtp.qq.com
	      String host = "smtp.163.com";  //163邮件服务器
	 
	      // 获取系统属性
	      Properties properties = System.getProperties();
	 
	      // 设置邮件服务器
	      properties.setProperty("mail.smtp.host", host);
	 
	      properties.put("mail.smtp.auth", "true");
		  
		  
		  //阿里云服务器禁用25端口,所以服务器上改为465端口
	     properties.put("mail.smtp.socketFactory.port", "465");
	     properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
	     properties.setProperty("mail.smtp.socketFactory.fallback", "false");
	     properties.setProperty("mail.smtp.socketFactory.port", "465");


		  
		  
	      // 获取默认session对象
	       Session session = Session.getDefaultInstance(properties,new Authenticator(){
	        public PasswordAuthentication getPasswordAuthentication()
	        {
	         return new PasswordAuthentication("你的真实邮箱地址", "你的真实密码"); //发件人邮件用户名、密码
	        }
	       });
	 
	      try{
	         // 创建默认的 MimeMessage 对象
	         MimeMessage message = new MimeMessage(session);
	 
	         // Set From: 头部头字段
	         message.setFrom(new InternetAddress(from));
	 
	         // Set To: 头部头字段
	         message.addRecipient(Message.RecipientType.TO,
	                                  new InternetAddress(to));
	 
	         // Set Subject: 头部头字段
	         message.setSubject("注册论坛网验证码");
	 
	         // 设置消息体
			  Random rand=new Random();
			  String txt=String.valueOf(rand.nextInt(9000)+1000);
			  sessions.setAttribute("yanzhengma",txt);
			  message.setText("你好"+reperson+"!  欢迎注册论坛网。验证码为:"+txt);
	
	         // 发送消息
	         Transport.send(message);
	     
	         result=1;
	      }catch (MessagingException mex) {
	         mex.printStackTrace();
	      }
	      return result;
	   }
 
}


贴上以上的代码以为可以发送,在本地电脑可以发送,在服务器上仍然发送失败,查看输出日志后才发现报的是以下的错误:



解决方法:在/etc/hosts中添加127.0.0.1本地映射

1.在linux终端输入  hostname


2.打开/etc/hosts编辑添加一行  127.0.0.1  iZwz9dgm0ak5eyqrkwypkjZ

3.再输入  hostname -i



解决以上问题,终于可以发送邮件啦!



















参考:https://www.cnblogs.com/hoojjack/p/8025284.html

https://www.cnblogs.com/FLFL/p/6476358.html

https://blog.csdn.net/zhangyunfei_happy/article/details/56276206

猜你喜欢

转载自blog.csdn.net/qq_40693828/article/details/80629820