繁体   English   中英

javax.mail.MessagingException:无法连接到SMTP主机:smtp.gmail.com,端口:587; java.net.NoRouteToHostException:主机没有路由

[英]javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; java.net.NoRouteToHostException: No route to host

我尝试了很多教程来创建一个用于发送电子邮件的应用程序,但是每个代码都会引发相同的错误:

javax.mail.MessagingException:无法连接到SMTP主机:smtp.gmail.com,端口:587; 嵌套的异常是:java.net.NoRouteToHostException:没有到主机的路由(主机不可达)

我使用Ubuntu 16.04和Eclipse Neon.1a版本(4.6.1)

这是我的代码:

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.internet.MimeMessage;

public class SendEmail {

public static void main(String args[]){
    try{
        String host ="smtp.gmail.com" ;
        String user = "myEmail@gmail.com";
        String pass = "myPassword";
        String to = "receiverEmail@gmail.com";
        String from = "myEmail@gmail.com";
        String subject = "My first email";
        String messageText = "Some text";
        boolean sessionDebug = false;

        Properties props = System.getProperties();

        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.required", "true");

        //java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        Session mailSession = Session.getDefaultInstance(props, null);
        mailSession.setDebug(sessionDebug);
        Message msg = new MimeMessage(mailSession);
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        msg.setRecipients(Message.RecipientType.TO, address);
        msg.setSubject(subject); msg.setSentDate(new Date());
        msg.setText(messageText);

       Transport transport=mailSession.getTransport("smtp");
       transport.connect(host, user, pass);
       transport.sendMessage(msg, msg.getAllRecipients());
       transport.close();
       System.out.println("message send successfully");
    }catch(Exception ex)
    {
        System.out.println(ex);
    }
}}

我可能需要安装其他软件或其他工具吗?

更新:

问题出在我的无线路由器中。

我通过手机上的热点使用了移动(3G)互联网,并且一切正常。

现在,如果有人有路由器安装经验,我们就可以解决问题。

它可能是阻止呼出电话的防火墙。 防火墙可以在客户端或服务器上。

可能是您对第三方的Google应用授权已关闭,因此请尝试允许他们: https : //myaccount.google.com/lesssecureapps

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM