如何在Codeigniter中配置SparkPost SMTP?

时间:2016-04-06 09:58:10

标签: codeigniter ssl smtp sparkpost

我成功使用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

有任何线索吗?

非常感谢。

1 个答案:

答案 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";