2015-09-10 79 views
0

我正在與jWordPress合作,將Quercus和JavaMail 1.4.1與WordPress 4.2.2結合在一個在Windows上的Tomcat下執行的WAR文件中。我在配置傳出電子郵件服務時遇到問題:默認情況下,Quercus嘗試聯繫本地主機端口25上的SMTP服務器,該服務器失敗。Quercus + WordPress電子郵件配置

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

我創建一個:

在WAR文件,櫟經由WEB-INF/web.xml中,在其他的設置中,具有以下的一個(I未註釋它在原始文件),被配置WEB-INF與AWS SES下面的設置,在不同的應用程序做工精細用JavaMail/php.ini文件(注意,這是在端口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 

因此,它看起來像櫟MailModule中是不多見的php.ini設置。我該如何解決?

P.S.請不要建議需要在本地主機的端口25上安裝sendmail或類似軟件的解決方案解決方案。

回答

0

嗯,事實證明,在

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

指定php.ini文件中必須有一個絕對路徑,而不是隻是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上。