我正在使用jWordPress,它将Quercus和JavaMail 1.4.1与WordPress 4.2.2结合在Windows上的Tomcat下执行的WAR文件中。我在配置传出电子邮件服务时遇到问题:默认情况下,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下的“登录”,然后在“丢失密码?”上输入WP用户名,然后单击“获取新密码”。这会在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中看到设置。我该如何解决?
附言请不要建议需要在本地主机的端口25上安装sendmail或类似内容的解决方法。
最佳答案
好吧,事实证明,在
<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代码,如果其他标头中有“发件人”设置,则将使用它,而根本不会使用“ sendmail_from”设置。
无论配置的管理员电子邮件地址设置如何,Wordpress似乎都使用“ wordpress @ localhost”。当此地址与远程SMTP主机一起使用时,电子邮件将被拒绝(AWS SES)或被接受但被静默丢弃(Comcast)。我会将其作为一个单独的问题发布在SO上。
关于wordpress - Quercus + WordPress电子邮件配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32504413/