有没有人在使用 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
关于您的问题的想法
/usr/bin/msmtp
是否可由所述用户执行? popen
可能在您的 PHP 环境中被禁用 CI_Email::_send_with_sendmail
方法的调用,以确定它在您的情况下失败的原因 关于php - 将 MSMTP 与 CodeIgniter 电子邮件库结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40516129/