我正在尝试使用Silex和SwiftMailer设置邮件程序脚本。但是,到目前为止,我还没有设法收到邮件。将swiftmailer.use_spool
设置为false
时,我不会收到错误但也不会收到电子邮件。而是像这样刷新假脱机传输队列......
if ($app['mailer.initialized']) {
$app['swiftmailer.spooltransport']
->getSpool()
->flushQueue($app['swiftmailer.transport']);
}
...我收到以下异常:
Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host abc.xyz [ #0]'
到目前为止,我还没有找到任何关于此例外的文档。我确定所有的SMTP设置和凭据都是有效的(我也尝试过其他主机,同样的问题)。我也可以ping主机,我使用的端口是打开的,php_openssl
已启用。
由于Swift\Transport\StreamBuffer.php:269
返回0,因此stream_socket_client
看起来失败了:
$this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
if (false === $this->_stream) {
throw new Swift_TransportException(
'Connection could not be established with host '.$this->_params['host'].
' ['.$errstr.' #'.$errno.']'
);
}
更新#1 我忘了查看错误日志,现在我看到它说:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/php_openssl.dll' - /usr/lib/php5/20121212/php_openssl.dll: cannot open shared object file: No such file or directory in Unknown on line 0
所以似乎PHP无法加载php_openssl扩展,虽然phpinfo()
表示该模块已启用?它应该放在哪里,或者我应该如何找到它?
更新#2
我相信我可能错误地尝试启用php_openssl.dll
扩展,而它适用于Windows环境。当我删除它时,错误显然已从错误日志中消失,但主要问题仍然存在。回到原点..
我可能做错了什么?