gpt4 book ai didi

java - 连接到 SMTP 服务器时出现 SocketException,但使用 telnet 时可以正常工作

转载 作者:行者123 更新时间:2023-11-29 05:33:08 25 4
gpt4 key购买 nike

我想通过 Java 发送电子邮件,但不幸的是我遇到了以下异常:

javax.mail.MessagingException: 
Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect

我正在使用 this little example program发送我的电子邮件。

但是当尝试连接到服务器时

telnet localhost 25

我能够建立连接。

远程 SMTP 服务器也会出现同样的情况。

可能是什么问题?


此处 mail.debug 设置为 "true" 的输出:

DEBUG: JavaMail version 1.4.7
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false

最佳答案

我不同意苛刻(对不起,不能评论我应该评论的地方,没有足够的声誉)。权限被拒绝错误发生在连接系统调用中,因此客户端甚至可以尝试向服务器进行身份验证。

不幸的是,您没有提供有关您正在运行的系统的任何信息 - windows、linux、其他一些 unix 或完全不同的系统。

我曾在一家公司遇到过此类问题,所有客户端 PC 上的本地 McAffee 配置为阻止所有流量流向端口 25,因此如果客户端感染病毒,它仍然无法向其他客户端发送邮件炸弹。也许您的系统上正在运行类似的东西?

或者,可能是 ipv4(我假设您使用的是 java)被阻止,但允许 ipv6。尝试在 telnet 连接后执行 netstat 以查明它正在使用哪个。但同样,我认为这与您计算机上的防火墙设置有关,这可能允许其中一种 IP 协议(protocol)但不允许另一种。

关于java - 连接到 SMTP 服务器时出现 SocketException,但使用 telnet 时可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com