我成功使用Mandrill从我的CodeIgniter网站发送邮件,使用此配置:
$config['mailtype'] = "html";
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.mandrillapp.com';
$config['smtp_user'] = 'user';
$config['smtp_pass'] = 'password';
$config['smtp_port'] = '587';
$this->email->initialize($config);
但是Mandrill不想做事务电子邮件,所以我需要迁移到SparkPost 以下是他们的指示:https://support.sparkpost.com/customer/en/portal/articles/1988470-smtp-connection-problems
我试过这个配置:
$config['mailtype'] = "html";
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.sparkpostmail.com';
$config['smtp_user'] = 'user';
$config['smtp_pass'] = 'password';
$config['smtp_port'] = '587';
$this->email->initialize($config);
但没有邮件发送,没有错误。所以我试着在主持人中添加“tls”:
$config['smtp_host'] = 'tls://smtp.sparkpostmail.com';
我收到了这个错误:
消息:fsockopen():SSL操作失败,代码为1. OpenSSL错误消息:
错误:1408F10B:SSL例程:SSL3_GET_RECORD:错误的版本号
文件名:libraries / Email.php
行号:1950
我在端口2525上遇到了同样的错误。
这是我在本地MAMP服务器上的phpinfo中的openssl部分:
启用OpenSSL支持
OpenSSL库版本OpenSSL 0.9.8zg 14
2015年7月OpenSSL标题版本OpenSSL 0.9.8r 2011年2月8日
但是我的Debian服务器上有同样的错误,使用phpinfo:
启用OpenSSL支持
OpenSSL库版本OpenSSL 1.0.1e 2013年2月11日
OpenSSL标题版本OpenSSL 1.0.1e 2013年2月11日
Openssl默认配置/usr/lib/ssl/openssl.cnf
有任何线索吗?
非常感谢。
答案 0 :(得分:6)
我很亲密:
SparkPost需要TLS而不是SSL。它必须在参数中设置,而不是在服务器URL中设置,因此它使用STARTTLS
。最后,我需要更改默认换行值。所以这是好的配置:
$config['mailtype'] = "html";
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.sparkpostmail.com';
$config['smtp_user'] = 'user';
$config['smtp_pass'] = 'password';
$config['smtp_crypto'] = 'tls';
$config['smtp_port'] = '587';
$condig['crlf'] = "\r\n";
$config['newline'] = "\r\n";