【发布时间】:2023-03-18 05:07:02
【问题描述】:
我想通过 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
【问题讨论】:
-
它显然是
Permission Denied,您需要传递身份验证信息才能连接到SMTP服务器,否则您的javasmpt客户端配置有问题.. -
@harsh 我没有通过 telnet 传递任何身份验证信息并且它正在工作。
-
尝试设置
props.put("mail.debug", "true")假设props是您的Properties实例,它会在控制台上打印smtp 内部日志,这可能有助于进一步调试 -
@harsh 不幸的是,这并没有改变任何东西。检索此属性时,它的计算结果为
null。 -
@hash 我错了:我将它设置为
false而不是true。但是输出不是很有帮助:DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
标签: java email smtp telnet socketexception