我们今天发现,对于我们的两个客户,JavaMail没有进行身份验证,因此我们的产品无法发送电子邮件。我们多年来一直在通过我们自己的服务器发送电子邮件,以及其他几个客户,我们认为我们正在使用身份验证。
代码如下:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
根据文档here,如果我们使用这种形式的connect()方法,JavaMail应该使用身份验证。我们没有设置任何属性,但如果我正确地阅读该页面,我们不需要。
我们正在使用JBoss 4.2.1.GA中的mail.jar。
我们需要采取哪些不同的做法?
更新:如果我在该文档页面上使用其他方法(设置mail.smtp.auth属性并提供Authenticator),则身份验证最终会起作用。但是我们用这种方法做错了什么?
答案 0 :(得分:2)
尝试使用props.put("mail.debug", "true");
获取可能的调试信息,以便您获得更多信息。
此外,如果这是一个Windows框,请查看防火墙或防病毒运行:http://forums.sun.com/thread.jspa?threadID=590866
答案 1 :(得分:1)
我终于发现我在呼唤:
transport.send(message, message.getAllRecipients());
,这是一个静态方法,而不是:
transport.sendMessage(message, message.getAllRecipients());
我认为这就是为什么它没有进行身份验证,所以我认为这是真正的答案。如果我发布了那段代码会有所帮助,但我不知道问题出在哪里。不能为我的生活弄清楚为什么Transport.send()是一个静态方法,但如果你知道,请tell me。