【问题标题】:Sending Email using SMTP codeigniter使用 SMTP codeigniter 发送电子邮件
【发布时间】:2015-11-10 23:08:22
【问题描述】:

我正在尝试使用 smtp codeigniter 发送电子邮件。我使用的代码如下:

public function notify_marketing(){
    $config = Array(
                    'protocol' => 'smtp',
                    'smtp_host' => 'ssl://smtp.googlemail.com',
                    'smtp_port' => 465,
                    'smtp_user' => 'myvalidemail@gmail.com', 
                    'smtp_pass' => '*******',//my valid email password
                    'mailtype' => 'html',
                    'charset' => 'iso-8859-1',
                    'wordwrap' => TRUE
                  );

    $this->email->initialize($config);
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");  
    $this->email->from('myvalidemail@gmail.com'); 
    $this->email->to('validreceiptent@gmail.com');
    $this->email->subject('My Subject');
    $this->email->message('Hello there');
    if($this->email->send())
    {
        $this->session->set_flashdata("success","Email sent.");
    }
     else
    {
        show_error($this->email->print_debugger());
    }
}

但是,我在响应中收到以下错误。我尝试了该网站的其他解决方案,但没有奏效。

    <div id="exception_error">
    <h1><span class="type">An Error Was Encountered [ 500 ]</span></h1>
    <div class="content">
        <p><p>220 smtp.googlemail.com ESMTP bv4sm16669443pbb.86 - gsmtp
<br /><pre>hello: 250-smtp.googlemail.com at your service, [110.44.127.179]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
</pre>lang:email_smtp_auth_pw<br />lang:email_send_failure_smtp<br /><pre>User-Agent: CodeIgniter
Date: Tue, 18 Aug 2015 12:03:42 +0545
From: <********@gmail.com>
Return-Path: <********@gmail.com>
To: *******@gmail.com
Subject: =?iso-8859-1?Q?My_Subject?=
Reply-To: "********@gmail.com" <*********@gmail.com>
X-Sender: *******@gmail.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <55d2ce42747f5@gmail.com>
Mime-Version: 1.0

提前谢谢你。

【问题讨论】:

标签: php codeigniter email smtp


【解决方案1】:

代码很完美。

您需要使用 gmail 的 应用程序密码 而不是 gmail 密码。请从 gmail 设置中设置应用程序密码并在此处提供密码。

然后它会完美地工作。查看更多来自HERE

在 gmail 中设置应用密码的过程:

  1. 访问您的App passwords page。系统可能会要求您登录自己的 Google 帐户。
  2. 在底部,点击选择应用并选择您正在使用的应用。
  3. 点击选择设备并选择您正在使用的设备。
  4. 选择生成。
  5. 按照说明在您的设备上输入应用密码(黄色栏中的 16 个字符的代码)。
  6. 选择完成。

完成后,您将不会再看到该应用密码代码。但是,您会看到您已为其创建应用密码的应用和设备的列表。

【讨论】:

  • 谢谢,但我找不到设置应用程序密码的设置。
  • @R.Karki 我已经包含了获取应用密码的过程。
  • 非常感谢您的帮助。尽管我找不到您在上述步骤中提到的确切设置,但是我在 gmail 设置中打开了对不太安全的应用程序的访问,并且它起作用了。再次感谢您。
【解决方案2】:

试试这个..

在“application/config”文件夹中创建一个名为“email.php”的文件,并将以下设置添加到其中。

<?php
    $config['protocol'] = 'smtp';
    $config['smtp_host'] = 'ssl://smtp.gmail.com'; //change this
    $config['smtp_port'] = '465';
    $config['smtp_user'] = 'user@gmail.com'; //change this
    $config['smtp_pass'] = 'password'; //change this
    $config['mailtype'] = 'html';
    $config['charset'] = 'iso-8859-1';
    $config['wordwrap'] = TRUE;
    $config['newline'] = "\r\n";
?>

在控制器中:

<?php
//send mail
function sendmail()
{
    $this->load->library('email'); // load email library
    $this->email->from('user@gmail.com', 'sender name');
    $this->email->to('test1@gmail.com');
    $this->email->cc('test2@gmail.com'); 
    $this->email->subject('Your Subject');
    $this->email->message('Your Message');
    $this->email->attach('/path/to/file1.png'); // attach file
    $this->email->attach('/path/to/file2.pdf');
    if ($this->email->send())
        echo "Mail Sent!";
    else
        echo "There is error in sending mail!";
}
?>

【讨论】:

  • 要创建一个库我应该把文件放在application/config吗?
  • 感谢您的帮助。我在 gmail 设置上打开了不太安全的应用程序的访问权限后,我提供的上述代码运行良好。
猜你喜欢
  • 2018-03-23
  • 2018-12-08
  • 2016-04-16
  • 2021-03-26
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
相关资源
最近更新 更多