我正在使用 jWordPress,它将 Quercus 和 JavaMail 1.4.1 与 WordPress 4.2.2 结合在一个 WAR 文件中,该文件在 Windows 上的 Tomcat 下执行。我在配置外发电子邮件服务时遇到问题:默认情况下,Quercus 尝试联系 localhost 端口 25 上的 SMTP 服务器,但失败了。
在 WAR 文件中,Quercus 是通过 WEB-INF/web.xml 配置的,除其他设置外,还有以下设置(我在原始文件中取消了注释):
<init-param>
<param-name>ini-file</param-name>
<param-value>WEB-INF/php.ini</param-value>
</init-param>
我为 AWS SES 创建了一个带有以下设置的 WEB-INF/php.ini 文件,它可以在不同的应用程序中与 JavaMail 一起正常工作(请注意,这是端口 587 上经过身份验证的 STARTTLS 连接):
[PHP]
[mail function]
SMTP = <address of the AWS SES SMTP host>
smtp_port = 587
smtp_username = <AWS SES username>
smtp_password = <AWS SES password>
sendmail_from = <a 'no-reply' email address>
上述参数的名称对应于 Quercus 的 MailModule 中的名称:
WEB-INF/web.xml 文件似乎在启动时被处理,因为如果在其中引入错误,它们会反映在 Tomcat 日志以及 WordPress 操作中。但是,日志中没有任何迹象表明 WEB-INF/php.ini 已被读取或处理。
WordPress 似乎工作正常。WP 发送邮件的一个简单测试是点击 Meta 下的“Log In”,然后点击“Lost your password?”,输入 WP 用户名并点击“Get New Password”。这会导致 Tomcat 日志中出现以下警告:
10-Sep-2015 09:57:47.836 WARNING [http-nio-8080-exec-4] com.caucho.quercus.lib.mail.MailModule.mail Quercus[] mail could not send mail to '<user email address>'
Could not connect to SMTP host: localhost, port: 25
因此,看起来 Quercus MailModule 没有看到来自 php.ini 的设置。我该如何解决?
PS 请不要建议需要在 localhost 的端口 25 上安装 sendmail 或类似的解决方案。