【问题标题】:Quercus + WordPress email configurationQuercus + WordPress 邮件配置
【发布时间】:2015-12-06 21:21:54
【问题描述】:

我正在使用 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 中的名称:

https://github.com/moriyoshi/quercus-gae/blob/master/src/main/java/com/caucho/quercus/lib/MailModule.java

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 的设置。我该如何解决这个问题?

附:请不要建议需要在 localhost 的端口 25 上安装 sendmail 或类似的解决方案。

【问题讨论】:

    标签: wordpress tomcat jakarta-mail quercus


    【解决方案1】:

    嗯,原来是php.ini文件中指定的

    <init-param>
      <param-name>ini-file</param-name>
      <param-value>WEB-INF/php.ini</param-value>
    </init-param>
    

    必须有一个绝对的路径,而不仅仅是WEB-INF/php.ini,例如

    C:/Program Files/Apache/Tomcat/.../WEB-INF/php.ini
    

    (我尝试了多个相对路径无济于事。)这解决了文件不被读取的问题。

    然而,另一个问题出现了:php.ini 中的'sendmail_from' 设置无效。查看上面链接中的 Quercus MailModule 代码,如果附加标头中有 'from' 设置,则将使用它,而根本不会使用 'sendmail_from' 设置。

    无论配置的管理员电子邮件地址设置如何,Wordpress 似乎都使用“wordpress@localhost”。当此地址与远程 SMTP 主机一起使用时,电子邮件要么被拒绝 (AWS SES),要么被接受但静默丢弃 (Comcast)。我将把它作为一个单独的问题发布在 SO 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多