无法使用 CodeIgniter 的电子邮件库发送电子邮件
Posted
技术标签:
【中文标题】无法使用 CodeIgniter 的电子邮件库发送电子邮件【英文标题】:Cannot send email using CodeIgniter's email library 【发布时间】:2015-09-06 17:28:50 【问题描述】:我正在尝试使用 CodeIgniter 的电子邮件库发送电子邮件。这是我写的代码。
$email_config = array(
'protocol' => 'smtp',
'smtp_host' => ' ssl://smtp.gmail.com',
'smtp_port' => '465',
'smtp_user' => 'shamir.towsif@gmail.com',
'smtp_pass' => '**********',
'mailtype' => 'html',
'newline' => "\r\n",
'charset' => 'iso-8859-1',
"wordwrap" => true
);
$this->CI->load->library('email', $email_config);
$this->CI->email->from('shamir.towsif@gmail.com', 'invoice');
$this->CI->email->to('shamir.towsif@gmail.com', "User");
$this->CI->email->subject('Invoice');
$this->CI->email->message('Test');
$this->CI->email->send();
echo $this->CI->email->print_debugger();
错误:这是我遇到的错误。
遇到以下 SMTP 错误:0 php_network_getaddresses: getaddrinfo 失败:名称或服务未知 无法发送数据: AUTH LOGIN 发送 AUTH LOGIN 命令失败。错误:无法发送 数据:MAIL FROM:发件人:遇到以下 SMTP 错误: 无法发送数据:RCPT TO:to:以下 SMTP 错误是 遇到:无法发送数据:DATA数据:以下SMTP 遇到错误:无法发送数据:用户代理:CodeIgniter 日期:2015 年 6 月 21 日星期日 05:52:56 +0600 发件人:“发票” 返回路径:收件人: shamir.towsif@gmail.com 主题:=?iso-8859-1?Q?Invoice?= 回复: “shamir.towsif@gmail.com” X-发件人:shamir.towsif@gmail.com X-Mailer: CodeIgniter X-Priority: 3 (Normal) Message-ID: Mime 版本:1.0 内容类型: 多部分/替代;边界="B_ALT_5585fcd8c643b" 这是一个 MIME 格式的多部分消息。您的电子邮件应用程序可能不会 支持这种格式。 --B_ALT_5585fcd8c643b 内容类型:文本/纯文本; charset=iso-8859-1 内容传输编码:8bit 测试 --B_ALT_5585fcd8c643b 内容类型:文本/html; charset=iso-8859-1 内容传输编码:引用打印测试 --B_ALT_5585fcd8c643b-- 无法发送数据:.
遇到以下 SMTP 错误:无法使用以下方式发送电子邮件 PHP SMTP。您的服务器可能未配置为使用此功能发送邮件 方法。用户代理:CodeIgniter 日期:2015 年 6 月 21 日星期日 05:52:56 +0600 来自:“发票”返回路径: 收件人:shamir.towsif@gmail.com 主题: =?iso-8859-1?Q?Invoice?= 回复:“shamir.towsif@gmail.com” X-发件人:shamir.towsif@gmail.com X-Mailer: CodeIgniter X-Priority: 3 (Normal) Message-ID: Mime 版本:1.0
内容类型:多部分/替代;边界="B_ALT_5585fcd8c643b"
这是一个 MIME 格式的多部分消息。您的电子邮件应用程序 可能不支持这种格式。
--B_ALT_5585fcd8c643b 内容类型:文本/纯文本; charset=iso-8859-1 内容传输编码:8bit
测试
--B_ALT_5585fcd8c643b 内容类型:text/html; charset=iso-8859-1 内容传输编码:引用打印
测试
--B_ALT_5585fcd8c643b--
问题:我以前可以发送电子邮件。然后我重新安装了我的操作系统和灯服务器,现在我不能。我做错了什么?
【问题讨论】:
你试过'sendmail'吗? 你为什么建议另一个库? 我不是要求你使用其他库,而不是 smtp,尝试发送邮件。只需更改配置中的参数即可。 那我该如何使用gmail呢? 我会把它作为答案。 【参考方案1】:我在 CI 中使用 sendmail 发送电子邮件。在使用发送邮件之前,您必须在 CI 中进行一些配置。
首先,进入system/libraries/Email.php并更改以下内容
class CI_Email
var $useragent = "CodeIgniter";
var $mailpath = "/usr/sbin/sendmail"; // Sendmail path
var $protocol = "sendmail"; // mail/sendmail/smtp
var $smtp_host = "mail.blah-blah.com"; // SMTP Server.
.....
然后我创建一个发送电子邮件的方法。
public function send_mail($email, $subject, $message)
//$this->load->library( 'email' );
$this->email->from( 'no-reply@blah-blah.com', 'blah-blah.com' );
$this->email->to( $email);
$this->email->subject( $subject );
$this->email->message( $message );
$this->email->send();
echo $this->email->print_debugger();
就是这样。您现在可以使用send_mail
方法发送电子邮件。
【讨论】:
echo $this->email->print_debugger();
行将永远不会执行,因为它上面的 return 语句。最好检查send()
调用是否成功,然后基于此有条件地return
或print_debugger()
。
@e_i_pi 我不知道我是怎么错过的,谢谢你的指点。我会编辑。以上是关于无法使用 CodeIgniter 的电子邮件库发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter 无法使用 PHP mail() 发送电子邮件
Codeigniter 和 Mandrill api,无法发送电子邮件