【问题标题】:Can not send email from codeigniter framework无法从 codeigniter 框架发送电子邮件
【发布时间】:2023-03-27 04:00:01
【问题描述】:

我在这个网站和许多其他网站上看到了同样的问题,但他们提供的解决方案对我不起作用。所以我又问了。

为了发送邮件,我编写了以下代码

<?php

class Email extends CI_Controller{
function __construct()
{
    parent::__construct();
}

function index()
{
    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'username' => 'mymail@gmail.com',
        'password' => 'password' 
    );

    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");

    $this->email->from('mymail@gmail.com', 'mymail bcc');
    $this->email->to('mymail@gmail.com');
    $this->email->subject('This is a test email');
    $this->email->message('Oops This is Great.');

    if($this->email->send())
    {
        echo 'Your email was sent';       
    }

    else
    {
        show_error($this->email->print_debugger());
    }
       }
       }

我安装了 openssl 并取消了 php.ini 中的 extension=php_openssl.dll 行的注释。但我得到以下错误

  An Error Was Encountered

   220 mx.google.com ESMTP qp6sm2730344pbc.55

    hello: 250-mx.google.com at your service, [119.30.39.78]
    250-SIZE 35882577
     250-8BITMIME
     250-AUTH LOGIN PLAIN XOAUTH
     250 ENHANCEDSTATUSCODES

     from: 530-5.5.1 Authentication Required. Learn more at
     530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55

     The following SMTP error was encountered: 530-5.5.1 Authentication Required. Learn
      more          at          
     530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55

     to: 530-5.5.1 Authentication Required. Learn more at
     530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55

     The following SMTP error was encountered: 530-5.5.1 Authentication Required. 
     Learn more at 
     530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55

     data: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 
     http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55

     The following SMTP error was encountered: 530-5.5.1 Authentication Required. Learn more at
      530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qp6sm2730344pbc.55
     502 5.5.1 Unrecognized command. qp6sm2730344pbc.55
     The following SMTP error was encountered: 502 5.5.1 Unrecognized command. qp6sm2730344pbc.55
     Unable to send email using PHP SMTP. Your server might not be configured to send
      mail using this method.

当我使用 parent::CI_Controller();我收到一个致命错误致命错误:在第 6 行调用 C:\wamp\www\test\application\controllers\email.php 中未定义的方法 CI_Controller::CI_Controller() 虽然我使用的是 php 5.4.3

请让我知道我在这里缺少什么。

【问题讨论】:

  • 我在您的示例中没有看到 parent::CI_Controller() 调用,但是自 php5.0 以来该语法已被弃用。该示例的parent::__construct(); 是新语法。

标签: codeigniter email


【解决方案1】:

内置的Mail 类使用密钥名称smtp_usersmtp_pass 作为smtp 凭据。

$config 数组中的usernamepassword 参数更改为smtp_usersmtp_pass

【讨论】:

  • 现在我收到很多错误,以下是一些错误遇到 PHP 错误 严重性:警告消息:fsockopen():无法连接到 ssl://smtp.googlemail.com: 465(连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。) 文件名:libraries/Email.php 行号:1689 遇到PHP错误消息: fwrite() 期望参数 1 是资源,给定的布尔值
  • 听起来像是网络问题,它是否适用于非 ssl 'smtp_host' =&gt; 'smtp.gmail.com''smpt_port' =&gt; 25?我怀疑 ssl 扩展正在起作用。
【解决方案2】:

工作代码

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/* SENDS EMAIL WITH GMAIL */

class Email extends CI_Controller {


    function __construct()
    {
        parent::__construct();
        //Do your magic here
    }

    function index()
    {
        $config = array(
            'protocol'  => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => 'mygmail@gmail.com',
            'smtp_pass' => '*********'
        );

        $this->load->library('email',$config);
        $this->email->set_newline("\r\n");
        // $this->email->initialize($config);

        $this->email->from('mygmail@gmail.com', 'Chirag');
        $this->email->to('mygmail@gmail.com');
        $this->email->cc('myanothergmail@gmail.com');   
        $this->email->subject('This is an email testing');
        $this->email->message('It\'s working, that\'s really awesome..!');

        if ($this->email->send()) 
        {
            echo "Your Email has been sent successfully... !!";
        }
        else
        {
            show_error( $this->email->print_debugger());
        }
    }

}

/* End of file email.php */
/* Location: ./application/controllers/email.php */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2013-08-13
    • 2012-12-16
    • 2013-06-15
    相关资源
    最近更新 更多