qq_43478653
qq_43478653
采纳率0%
2021-02-25 20:50

javaMail连接本地易邮异常

代码如下:

import java.util.Properties;  

import javax.mail.Authenticator;  
import javax.mail.Message;  
import javax.mail.Message.RecipientType;  
import javax.mail.MessagingException;  
import javax.mail.PasswordAuthentication;  
import javax.mail.Session;  
import javax.mail.Transport;  
import javax.mail.internet.AddressException;  
import javax.mail.internet.InternetAddress;  
import javax.mail.internet.MimeMessage;  
  
/** 
 * 邮件发送的工具类 
 * 使用eyoumailserver,内部账户发邮件 
 */  
/* 
javax.mail.Session:上下文环境信息,如服务器的主机名、端口号、协议名称等   
javax.mail.Message:邮件模型,发送邮件和接收邮件的媒介,封装了邮件的信息,如发件人、收件人、邮件标题、邮件内容等   
javax.mail.Transport:连接邮件SMTP服务器,发送邮件   
javax.mail.Store:连接邮件POP3、IMAP服务器,收取邮件 
*/  
public class MailUtils2 {  
    private static String userName = "xiaoming@wh.cn";//发送邮件的人  
    private static String password = "123456";//发送邮件的账户的密码  
    private static String userName2 = "xiaofang@wh.cn";//接收邮件的人  
    private static String port = "25";//465、587,默认25  
    /** 
     * 该方法用来发送邮件 
     * @param to:给谁发邮件 
     * **/  
    public static void sendMain(String to) throws AddressException, MessagingException{  
        //1、创建连接对象,连接到邮箱服务器  
        Properties props = new Properties();  
        //开启debug调试    
        props.setProperty("mail.debug", "true");    
        //stmp服务器需要进行身份验证,也就是有户名和密码的校验,这样才能通过验证  
        props.setProperty("mail.smtp.auth", "true");   
        //发送邮件协议名称    
        props.setProperty("mail.transport.protocol", "smtp");    
        //设置邮件服务器主机名    
        props.setProperty("mail.smtp.host", "223.150.50.95");//本地"localhost"  
        //设端口号(该配置可写可不写)  
        props.setProperty("mail.smtp.port", port);  
        
        //Authenticator:认证信息  
        Session session = Session.getInstance(props, new Authenticator(){  
            @Override  
            protected PasswordAuthentication getPasswordAuthentication() {  
                return new PasswordAuthentication(userName,password);//使用它给其他账户发邮件  
            }  
        });  
          
        //2、创建邮件对象  
        Message message = new MimeMessage(session);  
        //2.1设置发件人  
        message.setFrom(new InternetAddress(userName));  
        //2、2设置收件人  
        message.addRecipient(RecipientType.TO, new InternetAddress(to));  
        //2.3邮件的主题  
        message.setSubject("测试发消息");  
        //2.4邮件的正文(即邮件的内容)  
        message.setContent("测试邮件:来自xiaoming@wh.cn的邮件","text/html;charset=utf-8");  
          
        //3.发送邮件  
//        Transport trans = session.getTransport();  
//        //连接邮件服务器  
//        trans.connect(userName, password);    
//        //发送邮件  
//        trans.sendMessage(message, message.getAllRecipients());    
//        //关闭连接  
//        trans.close();  
          
        Transport.send(message);//(两种方式都可以)  
          
        System.out.println("发送成功");  
    }  
      
    public static void main(String[] args) {  
        try {  
            sendMain(userName2);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }   
    }  
}  

运行时提示异常信息如下:

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: 223.150.50.95, 25; timeout -1;
  nested exception is:
	java.net.ConnectException: Connection timed out: connect
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2209)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740)
	at javax.mail.Service.connect(Service.java:388)
	at javax.mail.Service.connect(Service.java:246)
	at javax.mail.Service.connect(Service.java:195)
	at javax.mail.Transport.send0(Transport.java:254)
	at javax.mail.Transport.send(Transport.java:124)
	at Mail.MailUtils2.sendMain(MailUtils2.java:81)
	at Mail.MailUtils2.main(MailUtils2.java:88)
Caused by: java.net.ConnectException: Connection timed out: connect
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:574)
	at java.base/sun.nio.ch.Net.connect(Net.java:563)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
	at java.base/java.net.Socket.connect(Socket.java:648)
	at java.base/java.net.Socket.connect(Socket.java:597)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:359)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2175)
	... 8 more
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • pengain 悟●禅●酒 2月前

    你查查你邮箱对应的  smtp  pop3等协议有没有打开

    点赞 1 评论 复制链接分享