Zend Mail Gmail SMTP

6 php email ssl gmail zend-framework

嗨,我正在尝试从Zend_Mail模块通过gmail发送一些电子邮件.这是我的代码:

$config = array(
    'ssl' => 'tls',
    'port' => 587,
    'auth' => 'login',
    'username' => 'webmaster@mydomain.com',
    'password' => 'password'
);
$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
Run Code Online (Sandbox Code Playgroud)

错误:

警告:stream_socket_enable_crypto()[streams.crypto]:此流不支持第206行/library/Zend/Mail/Protocol/Smtp.php中的SSL /加密无法通过TLS连接

我试着告诉我的托管服务提供商在phi.ini中启用openssl.dll

但他们说这不是必需的,因为服务器在Linux中,并且它不需要启用openssl.dll来使用TLS或SSL.

我的托管服务提供商是错误的还是我在代码中做错了什么.

提前致谢

法比安

buc*_*bay 12

openssl.dll是windows openssl扩展.

在Linux上,您需要使用OpenSSL支持编译PHP. http://www.php.net/manual/en/openssl.installation.php

您需要OpenSSL for PHP套接字和流函数才能使用TLS.Zend使用这些功能,因此需要相同的功能.

  • 您实际上需要两件事,OpenSSL和TLS应该注册为流/套接字传输.这应该在以下位置找到:注册的流套接字传输OpenSSL应该在它自己的头部下找到,因为它是一个启用的扩展.apache2handler显示apache配置,而不是PHP.所以你确实在你的服务器上编译了OpenSSL,并且apache配置为使用它,但你可能没有用PHP编译的OpenSSL PHP扩展.在PHP.ini中搜索OpenSSL,看看是否找到它. (2认同)

小智 6

我在这里遇到类似的问题是有效的; 使用Zend邮件传输和yahoo smtp:

$mailhost= 'smtp.example.com';
$mailconfig = array(
    'auth'     => 'login',
    'username' => 'me@example.com',
    'password' => 'topsecret',
    'port'     => '465',
    'ssl'      => 'ssl'
);
$transport = new Zend_Mail_Smtp($mailhost, $mailconfig);
Zend_Mail::setDefaultTransport($transport);
Run Code Online (Sandbox Code Playgroud)

这产生了一个错误:"权限被拒绝"并且没有发送邮件.经过三个星期的尝试所有解决方案后,我发现有效的方案正在改变:$ transport to; $transport = new Zend_Mail_Transport_Sendmail('-fsupport@website.com',$mailhost, $mailconfig);

按预期工作......


小智 0

尝试将 ssl:// 设置为主机名前缀并使用 465 作为端口。