首页 > 解决方案 > Codeigniter Amazon SES SMTP 连接错误

问题描述

我想在 Codeigniter 中使用 Amazon SES 发送电子邮件,我已经尝试了所有方法,我也尝试了之前在 codeigniter 上提出的问题,但我无法找到解决方案。

public function add_applicants()
{
 $this->load->model('visa/India_model');
 $datan = $this->India_model->insertappdata();
 $appid = $datan[appid];

 $this->load->library('email');
 $config['protocol'] = 'smtp';
 $config['charset'] = 'ISO-8859-1';
 $config['mailtype'] = 'html';
 $config['smtp_host'] = "ssl://email-smtp.eu-west-1.amazonaws.com";
 $config['smtp_user'] = "SMTP USER SES";
 $config['smtp_pass'] = "SMTP Password SES";
 $config['smtp_port'] = "465";
 $config['newline'] = "\r\n";
 $config['mailsender'] = "support@indiaevisaservice.com";
 $config['smtp_crypto']  = 'tls';

$this->email->initialize($config);
$this->email->print_debugger();
$this->email->from('support@verfiedemail.com', 'GYEV Experts');
$this->email->to('imthegrv@gmail.com', 'Test To');
$this->email->subject('Test');
$this->email->message('test');

if($this->email->send()):
       print_r($appid);
   else:
       print_r($this->email->print_debugger());
      endif;

}

我收到错误

SMTP 连接()失败。https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

标签: phpsmtpphpmailercodeigniter-3amazon-ses

解决方案


您没有按照错误消息中提供的链接进行操作,该链接提供了可用于诊断问题的测试。

这三行是不一致的:

$config['smtp_host'] = "ssl://email-smtp.eu-west-1.amazonaws.com";
$config['smtp_port'] = "465";
$config['smtp_crypto']  = 'tls';

tls模式在端口 465 上不起作用。应该是ssl. 或者,将端口更改为587,它应该是整数,而不是字符串。ssl://您的主机上也不需要前缀;这只会增加混乱。第一步,将它们更改为:

$config['smtp_host'] = 'email-smtp.eu-west-1.amazonaws.com';
$config['smtp_port'] = 465;
$config['smtp_crypto']  = 'ssl';

您可能还有其他问题(例如,您的 ISP 可能会阻止出站 SMTP 连接),但指南中列出了许多其他测试可以帮助您诊断。


推荐阅读