0

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

        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);
        }
4

3 回答 3

0

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

您可以通过 Telnet 命令检查这一点

Windows---start----run----cmd---type 'Telnet (SMTP SERVER IP) (PORT)' 回车

于 2012-05-03T13:02:39.660 回答
0

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

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

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

  • 25 用于 SMTP
  • 465 用于 SSL
  • 587 用于 TLS

如果您发布调试输出,我们可能会提供更多提示。

于 2014-01-16T22:08:55.323 回答
-1

JavaMail FAQ提供了调试连接问题的技巧。你试过了吗?

于 2012-04-24T17:08:31.340 回答