有没有人在使用 msmtp 时能够使用标准 CodeIgniter 电子邮件库成功发送电子邮件?

我正在运行 Ubuntu 并且我已经成功安装和配置了 MSMTP。我已经能够从命令行发送电子邮件并使用默认的 PHP mail() 函数。

我的 application/config/email.php 文件看起来像这样

$config = array(
    'protocol' => 'sendmail',
    'mailpath' => '/usr/bin/msmtp -C /etc/msmtp/.msmtprc -t',
    'smtp_host' => 'smtp.gmail.com',
    'smtp_user' => '[email protected]',
    'smtp_pass' => 'xxxxxxxx',
    'smtp_port' => 587,
    'smtp_timeout' => 30,
    'smtp_crypto' => 'tls',
);

但这不起作用。如果有人成功了,最好知道你是如何做到的。理想情况下,我想使用 CodeIgniter 的电子邮件库,因为它有很多我不想自己编写的好功能。

最佳答案

我能够通过 CodeIgniter 和 msmtp 发送电子邮件而没有太多麻烦。在我的例子中,我使用了 Sendgrid,因为我在使用 msmtp 和 Gmail 和 Yahoo 时遇到了身份验证问题。这是我的设置(在 Ubuntu 14.04、php 5.5.9、Code Igniter latest 上运行):

msmtp 配置-/home/quickshiftin/.msmtprc

account sendgrid
host smtp.sendgrid.net
port 587
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user SendGridUsername
password SendGridPassword

代码点火器 Controller - 应用程序/ Controller /Tools.php
class Tools extends CI_Controller {

    public function message()
    {
        $this->load->library('email');

        $this->email->from('[email protected]', 'Nate');
        $this->email->to('[email protected]');

        $this->email->subject('Send email through Code Igniter and msmtp');
        $this->email->message('Testing the email class.');

        $this->email->send();
    }
}

电子邮件库配置 - application/config/email.php
$config = [
    'protocol' => 'sendmail',
    'mailpath' => '/usr/bin/msmtp -C /home/quickshiftin/.msmtprc --logfile /var/log/msmtp.log -a sendgrid -t',
];

通过 CLI 发送电子邮件
php index.php tools message
关于您的问题的想法
  • 您的网络服务器或命令行用户是否可以读取/etc/msmtp/.msmtprc ? /usr/bin/msmtp 是否可由所述用户执行?
  • popen 可能在您的 PHP 环境中被禁用
  • 使用 a debugger 跟踪对 CI_Email::_send_with_sendmail 方法的调用,以确定它在您的情况下失败的原因
  • 如果您像我一样为 msmtp 配置日志文件,您可以在尝试通过 Code Igniter 发送以捕获潜在问题后查看那里
  • 关于php - 将 MSMTP 与 CodeIgniter 电子邮件库结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40516129/

    10-13 02:13