3

我们今天发现,对于我们的两个客户,JavaMail 没有进行身份验证,因此我们的产品无法发送电子邮件。多年来,我们一直通过自己的服务器以及其他几个客户发送电子邮件,我们认为我们对所有这些都使用了身份验证。

代码如下:

    transport = session.getTransport("smtp");
    transport.connect(hostName, port, user, password);

根据此处的文档,如果我们使用这种形式的 connect() 方法,JavaMail 应该使用身份验证。我们没有设置任何属性,但如果我正确阅读该页面,我们就不需要。

我们正在使用 JBoss 4.2.1.GA 中的 mail.jar。

我们需要做些什么不同的事情?

更新:如果我在该文档页面上使用其他方法(设置 mail.smtp.auth 属性并提供 Authenticator),身份验证最终会起作用。但是我们用这种方法做错了什么?

4

2 回答 2

2

尝试props.put("mail.debug", "true");可能的调试信息,这会给你更多的洞察力。

此外,如果这是一个 Windows 机器,请查看运行的防火墙或杀毒软件: http: //forums.sun.com/thread.jspa?threadID=590866

于 2010-02-10T07:12:20.443 回答
1

我终于发现我在打电话:

transport.send(message, message.getAllRecipients());

,这是一个静态方法,而不是:

transport.sendMessage(message, message.getAllRecipients());

我认为这就是它没有进行身份验证的原因,所以我认为这是真正的答案。如果我发布那段代码会有所帮助,但我不知道问题出在哪里。我无法弄清楚为什么 Transport.send() 是一个静态方法,但如果你知道,请告诉我

于 2010-02-16T16:50:07.740 回答