codeigniter

时间:2017-06-08 10:25:29

标签: php codeigniter email email-integration

我正在尝试通过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,验证您的" SMTP"和" smtp_port"在php.ini中设置或使用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

2 个答案:

答案 0 :(得分:0)

我认为您还没有配置邮件服务器。如果您使用的是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为ghost for localhost工作。

在php.ini文件中找到[mail function]并更改

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");

请提出您在localhost上使用的堆栈,如果您没有使用XAMPP或WAMP。

答案 1 :(得分:0)

您唯一做错的是电子邮件库加载和一些配置选项: 您正在将电子邮件库加载为$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!';
    }