2015-09-10 7 views
0

Я работаю с jWordPress, который сочетает Quercus и JavaMail 1.4.1 с WordPress 4.2.2 в файле WAR, выполненном под Tomcat в Windows. У меня возникла проблема с настройкой исходящей электронной почты: по умолчанию Quercus пытается связаться с SMTP-сервером на 25-м порту localhost, что не удается.Конфигурация электронной почты Quercus + WordPress

В файле WAR, Quercus конфигурируется с помощью WEB-INF/web.xml, что среди других параметров, имеет следующий один (я раскомментировал его в исходном файле):

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

Я создал WEB-INF/php.ini файл со следующими параметрами для AWS СЭС, которые работают хорошо с JavaMail в другом приложении (обратите внимание, что это соединение с проверкой подлинности STARTTLS на порту 587):

[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> 

имена выше параметров соответствуют тем, которые найдены в MailModule Quercus:

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 состоит в том, чтобы щелкнуть «Вход в систему» ​​в разделе «Мета», затем «Забыли пароль?», Введите имя пользователя 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. Как это исправить?

P.S. Пожалуйста, не предлагайте обходные решения, требующие установки sendmail или аналогично на 25-м порту localhost.

ответ

0

Ну, оказалось, что файл 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 

(Я экспериментировал с несколькими относительными путями безрезультатно.) Это решило проблему не прочитанного файла.

Однако возникла другая проблема: параметр sendmail_from в php.ini не имеет никакого эффекта. Если посмотреть на код Quercus MailModule по ссылке выше, если в дополнительных заголовках есть параметр «from», тогда он будет использоваться, а параметр «sendmail_from» вообще не будет использоваться.

Wordpress, похоже, использует «wordpress @ localhost», независимо от настроенного адреса электронной почты администратора. Когда этот адрес используется с удаленным узлом SMTP, электронное письмо либо отклонено (AWS SES), либо принято, но тихо отключено (Comcast). Я опубликую это на SO как отдельную проблему.

Смежные вопросы