2012-04-24 87 views
0

每当我试图连接到smtp主机它显示连接失败,我的本地交换服务器上的端口25上的响应-1,但我能够连接到gmail smtp主机从gmail发送电子邮件我使用下面的代码。smtp连接使用javamail api失败?

 Properties props = System.getProperties(); 
     props.put("mail.smtp.host", "localexchange.server.address"); 
     props.put("mail.from", "emailid"); 
     Session session = Session.getInstance(props, null); 

     try { 
      MimeMessage msg = new MimeMessage(session); 
      msg.setFrom(); 
      msg.setRecipients(Message.RecipientType.TO, 
           "emailid"); 
      msg.setSubject("JavaMail hello world example"); 
      msg.setSentDate(new Date()); 
      msg.setText("Hello, world!\n"); 
      Transport.send(msg); 
     } catch (MessagingException mex) { 
      System.out.println("send failed, exception: " + mex); 
     } 

回答

-1
+0

是的,我试过它们,我认为邮件没有被路由到我的交换服务器,但我能够telnet到我的交换服务器成功,有没有什么办法可以告诉我的程序像TTL(生存时间)为我的邮件。 – RamIndani 2012-04-25 06:21:26

+0

我发现我连接的局域网是在不同的网络中,交换机在不同的网络中,两个网络都通过交换机连接(我的outlook工作在完全相同的交换机上) – RamIndani 2012-04-25 10:39:21

+0

如果你在同一台机器上运行telnet,应用程序正在运行,并且telnet连接,但JavaMail不,我不知道发生了什么。可能您的计算机上有防火墙,只允许某些应用程序连接到某些远程计算机?如果您要与Outlook进行比较,请注意,Outlook通常使用Microsoft专有协议,而不是JavaMail使用的Internet标准协议。确保您的Exchange服务器设置为支持这些互联网标准协议。 – 2012-04-25 21:21:19

0

首先检查您的SMTP服务器端口是否为您的系统打开。

您可以通过Telnet命令检查这个

的Windows ---开始----运行---- CMD ---型 '的Telnet(SMTP服务器IP)(PORT)' 命中进入

+0

是的,我可以远程登录到SMTP服务器 – RamIndani 2012-05-06 08:50:44

0

通过将mail.smtp.debug属性设置为true,获取实际的SMTP会话调试文本。您可以从命令提示符读取调试输出或将其设置为输出到文件。

检查您的验证方法是否允许。它说AUTH它应该有允许的身份验证选项(GSSAPI,DIGEST-MD5,PLAIN,LOGIN)。

如果它没有得到AUTH您可能会使用错误的端口。通常:

  • 25 SMTP
  • 465 SSL
  • 587 TLS

如果您发布的调试输出,我们或许可以提供一些更多的技巧。