JavaMail连接问题

我正在尝试测试一个在线发现的简单程序,使用JavaMail发送电子邮件。 我试图使用工作电子邮件,但我收到错误“无法连接到SMTP主机:…”和“权限被拒绝:连接”。 我已经查看了有关此问题的其他post,包括:

JavaMail Exchange身份validation

使用JSP发送电子邮件

JavaMail API到iMail – java.net.SocketException:权限被拒绝:连接

我想我已经解决了那些基本上是IPv4问题和身份validation的post的解决方案中提到的问题。 我是尝试使用JavaMail的新手,所以我想知道我是否在制作其他初学者错误。 还有其他我忽略的事情吗? 我是否有可能以这种方式访问​​服务器? 我使用的是通用名称而不是我公司的实际名称。

代码如下:

public static void main(String[] args) { System.setProperty("java.net.preferIPv4Stack" , "true"); String host="mail.company.com"; final String user="user@company.com";//change accordingly final String password="XXXXXXXX";//change accordingly String to="user@company.com";//change accordingly //Get the session object Properties props = new Properties(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject("javatpoint"); message.setText("This is simple program of sending email using JavaMail API"); //send the message Transport.send(message); System.out.println("message sent successfully..."); } catch (MessagingException e) { e.printStackTrace(); } } 

堆栈跟踪:

 javax.mail.MessagingException: Could not connect to SMTP host: mail.company.com, port: 25; nested exception is: java.net.SocketException: Permission denied: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) at javax.mail.Service.connect(Service.java:313) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect(Service.java:121) at javax.mail.Transport.send0(Transport.java:190) at javax.mail.Transport.send(Transport.java:120) at mailtesting.SendMailBySite.main(SendMailBySite.java:45) Caused by: java.net.SocketException: Permission denied: connect at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) ... 7 more 

 java.net.SocketException: Permission denied: connect 

这意味着您已连接到服务器和端口,服务器主动拒绝您的连接。

如果您尝试telnet到此服务器和端口,您可能会获得更具描述性的消息,无论哪种方式,该端口都无法正常工作。

最有可能的是端口25被阻止作为安全措施,这对大多数公司来说都是非常标准的设置。

由于您使用Outlook无法在设置中找到端口,我假设您正在连接到Exchange服务器,如果整个公司是Microsoft Outlook商店,则可能根本不启用SMTP

您需要联系您的系统管理员团队,以了解您应该实际使用的端口和协议。