CodeIgniter,PHPMailer和SendGrid无法在基于cPanel的主机上工作



我有一个CodeIgniter项目在基于cPanel/centOS的主机上运行。CodeIgniter电子邮件类(运行于phpMailer v6.1.4(不在此主机上工作,而是在本地和其他环境中工作。

  • 当我们在基于cPanel的主机上运行下面的代码时,我们从PHPMailer调试函数中得到了一个无法解释的错误:

    遇到以下SMTP错误:+�W��电视���:����;�D���q��无法使用PHP SMTP发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。

  • 奇怪的是,直到两天前,一切都在工作,(据我所知(代码级别上没有任何变化。

  • 当我们检查错误日志时,我们会看到以下内容:

严重性:警告-->stream_socket_enable_crypto((:对等证书CN=*.mywebhost.com' did not match expected CN=smtp.sendgrid.net'/home/myenv/public_html/system/librarys/Email.php

以上让我相信:

  • 主机正在利用某种配置(如"FKA SMTP Tweak"(阻止我们连接到SendGrid。(我打开/关闭了这个,但似乎什么都没有(
  • 存在某种SSL问题

我一直在尝试与我们的主持人进行诊断,但到目前为止,他们一直没有帮助,所以任何见解都将是最受欢迎的,并提前感谢!

如果我们能提供更多信息,请告诉我们,并提前感谢您的合作。

$config                     = array();
$config['useragent']        = 'PHPMailer';
$config['protocol']         = 'smtp';
$config['mailpath']         = '/usr/sbin/sendmail';
$config['smtp_host']        = 'smtp.sendgrid.net';
$config['smtp_user']        = 'USER';
$config['smtp_pass']        = 'PASSWORD';
$config['smtp_port']        = 587;
$config['smtp_timeout']     = 5;
$config['smtp_crypto']      = 'tls';
$config['wordwrap']         = true;
$config['wrapchars']        = 76;
$config['mailtype']         = 'html';
$config['charset']          = 'iso-8859-1';
$config['validate']         = true;
$config['priority']         = 3;
$config['crlf']             = "n";
$config['newline']          = "n";
$config['bcc_batch_mode']   = false;
$config['bcc_batch_size']   = 200;
$this->load->library('email');
$this->email->initialize($config);
$this->email->from('my@email.com', 'Your Name');
$this->email->to('my@email.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
show_error($this->email->print_debugger());

您的配置中有这个:

$config['smtp_host']        = 'smtp.sendgrid.net';

但你在错误中看到了这一点:

Peer certificate CN=*.mywebhost.com did not match expected CN=smtp.sendgrid.net

这告诉我们,您的主机提供商正在将SMTP通信重定向到他们自己的邮件服务器。因为这种重定向对您来说是不可见的,所以TLS可以发现预期的名称与所提供的证书不匹配,并中止连接,因为这实际上是一种中间人攻击。

你需要要求你的提供商停止重定向你的SMTP流量,或者找到一个新的托管服务。

注意:这个解决方案可能有所不同,但这就是解决我问题的方法(请参阅@Syncro的评论,更准确地说……下面的"解决方案"是我在特定情况下如何与托管提供商解决问题的(

我的托管提供商必须:

  • 确保服务器接受传出连接
  • 重新启动防火墙
  • 请确保FKA SMTP调整已禁用

也就是说,我已经测试了SendGrid的PHP API库,可能会继续测试。我认为PHPMailer是一个很好的解决方案,但在某些情况下(比如我的(,某些托管提供商可能会干扰它

相关内容

  • 没有找到相关文章

最新更新