无法使用 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() 调用是否成功,然后基于此有条件地returnprint_debugger() @e_i_pi 我不知道我是怎么错过的,谢谢你的指点。我会编辑。

以上是关于无法使用 CodeIgniter 的电子邮件库发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 无法使用 PHP mail() 发送电子邮件

Codeigniter 和 Mandrill api,无法发送电子邮件

无法发送电子邮件 Codeigniter

无法使用 CodeIgniter SMTP 发送 Html 邮件

无法在 codeigniter 中正确发送电子邮件

无法使用 codeIgniter 从 gmail smtp 服务器发送电子邮件?