我使用以下代码从Java应用程序发送电子邮件。在我的计算机上,它在第二台计算机上工作正常,但在另一台计算机上(在同一网络中)它没有,尽管我们使用相同的连接设置。
public void connect() throws MessagingException
{
Authenticator auth = new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(smtpUser, smtpPassword);
}
};
Properties props = new Properties();
props.put("mail.smtp.host", this.smtpServer);
props.put("mail.smtp.auth", true);
session = Session.getDefaultInstance(props, auth);
store = session.getStore(this.protocol);
store.connect(this.mailboxServer, this.user, this.password); //<-- exception is thrown here
}
这是我得到的例外:
javax.mail.MessagingException: connect failed;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:161)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
at com.myapp.MailboxConnection.connect(MailboxConnection.java:66)
caused by: java.net.SocketException: Permission denied: connect
它可能在一台计算机上不起作用的原因是什么?
答案 0 :(得分:0)
您应该检查使用哪个端口,可能是您机器上允许的端口,但不是另一个端口。
答案 1 :(得分:0)
我认为这可能是网络问题或可能是权限问题(以管理员身份更改您的用户权限)
检查您的系统是否能够连接到邮件服务器
ping mailservername / mailserverip例如:ping www.gmail.com/192.168.1.98
答案 2 :(得分:0)
您的代码是否在启用了安全管理器的应用服务器中运行?您的应用程序可能未被Java运行时授予连接到该主机的权限。
答案 3 :(得分:0)
问题