Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaMail不进行身份验证?_Java_Smtp_Jakarta Mail - Fatal编程技术网

为什么JavaMail不进行身份验证?

为什么JavaMail不进行身份验证?,java,smtp,jakarta-mail,Java,Smtp,Jakarta Mail,我们今天发现,对于我们的两个客户,JavaMail没有进行身份验证,因此我们的产品无法发送电子邮件。多年来,我们一直通过自己的服务器以及其他一些客户发送电子邮件,我们认为我们正在对所有这些客户使用身份验证 守则的内容如下: transport = session.getTransport("smtp"); transport.connect(hostName, port, user, password); 根据文档,如果我们使用这种形式的connect()方法,JavaMail

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

守则的内容如下:

    transport = session.getTransport("smtp");
    transport.connect(hostName, port, user, password);
根据文档,如果我们使用这种形式的connect()方法,JavaMail应该使用身份验证。我们没有设置任何属性,但是如果我正确地阅读了该页面,我们不需要这样做

我们正在使用JBoss4.2.1.GA中的mail.jar

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

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

试试
props.put(“mail.debug”,“true”)以获取可能的调试信息,这将为您提供更多信息


此外,如果这是一个Windows机箱,请查看是否正在运行防火墙或防病毒软件:

我终于发现我在呼叫:

transport.send(message, message.getAllRecipients());
,这是一种静态方法,而不是:

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

我认为这就是为什么它没有进行身份验证,所以我认为这才是真正的答案。如果我发布了那段代码,可能会有所帮助,但我不知道问题出在哪里。我一辈子都搞不明白为什么Transport.send()是一个静态方法,但是如果你知道的话,请告诉我。

在尝试了这一点之后,很明显Java并没有按照文档中的说法做。“使用用户名和密码参数显式调用传输连接方法”不会导致身份验证。你必须“在创建邮件会话时提供一个验证器对象,并在验证器回调期间提供用户名和密码信息。”我想这对我们来说太糟糕了。我重新编码了。谢谢,孙。。。