我想昨天亚马逊宣布了对SES(简单电子邮件服务)的SMTP支持。
我试图发送SMTP电子邮件与Codeigniter没有运气。
我有一个经过验证的发件人,一切看起来都很好:
$this->load->library('email');
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'email-smtp.us-east-1.amazonaws.com',
'smtp_user' => 'SMTP USERNAME',
'smtp_pass' => 'SMTP PASSWORD',
'smtp_port' => 465,
'mailtype' => 'html'
);
$this->email->initialize($config);
$this->email->print_debugger();
$this->email->from('verified_email_address@something.com', 'Test From');
$this->email->to('email@example.com', 'Test To');
$this->email->subject('Test');
$this->email->message('test');
$this->email->send();
字符串
我尝试了下面的smtp_host:
- email-smtp.us-east-1.amazonaws.com
- tls:email-smtp.us-east-1.amazonaws.com
- ssl:email-smtp.us-east-1.amazonaws.com
当我回显print_debugger()时,我得到:
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-194655181
hello: 421 Timeout waiting for data from client.
型
这些测试在mediatemple(gs)服务器上运行。
5条答案
按热度按时间llycmphe1#
我得到了超时消息,直到我添加了这行:
字符串
我将主机设置为
ssl://email-smtp.us-east-1.amazonaws.com
yqhsw0fo2#
要让CI与Amazon Simple Email Service(SES)配合使用,您需要做三件事
1.需要设置
newline = \r\n
,否则将超时。1.需要将
smtp_crypto
设置为某个值。(新要求)1.需要确保“发件人”电子邮件地址在Amazon SES中得到批准。我做了我的“从”电子邮件地址“no-reply@mydomain.com”
此外,您应该为您的“发件人”电子邮件地址设置DKIM,以防止电子邮件被放入垃圾邮件文件夹。这涉及到进入Amazon SES ->身份管理->电子邮件地址-> DKIM,点击启用按钮,并将3个DNS条目添加到您网站的DNS。
不需要做任何特殊的设置SPF。信封域amazonses.com通过SPF。
最后,如果您希望用户能够回复不同于您批准的“发件人”电子邮件地址的电子邮件地址,请确保使用“回复”。
示例工作代码:
字符串
nmpmafwu3#
字符串
ryhaxcpt4#
我还需要添加一行
字符串
到我的配置阵列
这是supported by CI 2.1.0 and greater
fslejnso5#
对我有效的设置看起来像这样:
字符串
换行符必须设置为“\r\n”,并且可以在配置文件中设置,如果正确设置为“\r\n”,而不是如上所述的“\r\n”。