微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

建立连接后 SMTP GMAIL 服务器不响应 (java)

如何解决建立连接后 SMTP GMAIL 服务器不响应 (java)

我尝试创建自己的电子邮件客户端。在我开始创建 GUI 等之前,我尝试让基础工作。通过 Gmail 服务器发送电子邮件不起作用。

我通过 SSL 套接在端口 465 上建立到主机 smtp.gmail.com 的连接。在我发送 EHLO 命令后,服务器回复一条消息。但所有其他消息都被忽略,我对套接字的读取超时。

为什么服务器回复了 EHLO,然后不再响应?

这是我的控制台输出

Successfully connected to smtp.gmail.com:465.
EHLO gmail.com
220 smtp.gmail.com ESMTP p15sm5794363ejx.109 - gsmtp
MAIL FROM:<myEmail@gmail.com>
java.net.socketTimeoutException: Read timed out

这是我的客户端代码中有趣的部分:

public void connect(String ip,int port,int timeout) {
    try {
        SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        socket = (SSLSocket) sslSocketFactory.createSocket(ip,port);
        socket.setSoTimeout(timeout);
        out = new PrintWriter(socket.getoutputStream(),true);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println("Successfully connected to " + ip + ":" + port + ".");
    } catch (IOException e) {
        System.out.println("Error: Can't connect to " + ip + ":" + port + ".");
        e.printstacktrace();
    }
}

public String sendMessage(String msg) {
    out.print(msg + "\r\n");
    String resp = "";
    try {
        resp = in.readLine();
    } catch (IOException e) {
        e.printstacktrace();
    }
    return resp;
}

在主函数中,我只是从控制台读取输入,使用 sendMessage() 发送它并在循环中打印响应。套接字超时设置为 20 秒。

编辑:我不想使用任何 3rd 方库或 javax.mail

解决方法

在您可以从 Java 应用程序使用您的 Gmail 帐户之前,您必须转到您的 Gmail 首选项并将其配置为能够使用安全性较低的应用程序。

less secure apps google

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。