【问题标题】:Mail sending error in codeignitercodeigniter中的邮件发送错误
【发布时间】:2017-11-10 00:24:38
【问题描述】:

我正在尝试通过 Codeigniter 电子邮件库表单 localhost 发送电子邮件。下面是我的代码。

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'shreesaipratik1@gmail.com',
    'smtp_pass' => 'xxxxxx',
    );
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");
    $this->email->from('shreesaipratik1@gmail.com');
    $this->email->to('shreesaipratik@gmail.com');
    $this->email->subject('Subject');
    $this->email->message('Sample message');
    if (!$this->email->send()) 
    {
        show_error($this->email->print_debugger()); 
    }
    else 
    {
        echo 'Your e-mail has been sent!';
    }

我收到以下错误:-

无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。 &

严重性:警告

消息:mail():无法在“localhost”端口 25 连接到邮件服务器,请验证 php.ini 中的“SMTP”和“smtp_port”设置或使用 ini_set()

文件名:libraries/Email.php

行号:1896

回溯:

文件:D:\xampp\htdocs\ajax\application\controllers\angular_http.php 线路:29 功能:发送

文件:D:\xampp\htdocs\ajax\index.php 线路:315 函数:require_once

【问题讨论】:

    标签: php codeigniter email


    【解决方案1】:

    我认为您尚未配置邮件服务器。如果您使用的是 XAMPP,那么您可以轻松地从 localhost 发送邮件。

    例如,您可以配置(考虑 'C:\xampp' 作为安装目录)C:\xampp\php\php.ini 和 c:\xampp\sendmail\sendmail.ini 让 gmail 发送邮件。

    在 C:\xampp\php\php.ini 中找到 extension=php_openssl.dll 并从该行的开头删除分号,以使 SSL 适用于本地主机的 gmail。

    在php.ini文件中找到【邮件功能】并修改

    SMTP=smtp.gmail.com
    smtp_port=587
    sendmail_from = my-gmail-id@gmail.com
    sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
    

    现在打开 C:\xampp\sendmail\sendmail.ini。将 sendmail.ini 中的所有现有代码替换为以下代码

    [sendmail]
    
    smtp_server=smtp.gmail.com
    smtp_port=587
    error_logfile=error.log
    debug_logfile=debug.log
    auth_username=my-gmail-id@gmail.com
    auth_password=my-gmail-password
    force_sender=my-gmail-id@gmail.com
    

    首先,确保您的 PHP 安装支持 SSL(在 phpinfo() 的输出中查找“openssl”部分)。

    您可以在 PHP.ini 中设置以下设置:

    ini_set("SMTP","ssl://smtp.gmail.com");
    ini_set("smtp_port","465");
    

    如果您不使用 XAMPP 或 WAMP,请提供您在 localhost 上使用的堆栈。

    【讨论】:

    • 现在使用这个设置错误消失了,但是邮件还没有发送。
    • 请检查25端口是否打开。
    【解决方案2】:

    您做错的唯一一件事是电子邮件库加载和一些配置选项: 您正在将电子邮件库加载为$this->load->library('email', $config);

    这是错误 所以将其加载为$this->load->library('email');并将其初始化为$this->email->initialize($config);完整代码见下文:

    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'your@mail.com', // change it to yours
        'smtp_pass' => 'yourpassword', // change it to yours
        'mailtype' => 'text',// it can be text or html
        'wordwrap' => TRUE,
        'newline' => "\r\n",
        'charset' => 'utf-8',
        );
        $this->load->library('email');
        $this->email->initialize($config);
        $this->email->from('your@mail.com',"Your Name");
        $this->email->to('receiver@mail.com');
        $this->email->subject('Subject');
        $this->email->message('Sample message');
        if (!$this->email->send()) 
        {
            show_error($this->email->print_debugger()); 
        }
        else 
        {
            echo 'Your e-mail has been sent!';
        }
    

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 2015-03-17
      • 2016-05-06
      • 1970-01-01
      • 2016-09-02
      • 2012-03-17
      • 1970-01-01
      • 2016-11-15
      相关资源
      最近更新 更多