2015-08-18 12 views
3

Я пытаюсь отправить электронное письмо с помощью smtp codeigniter. Код, который я использую, приведен ниже:Отправка электронной почты с помощью SMTP codeigniter

public function notify_marketing(){ 
    $config = Array(
        'protocol' => 'smtp', 
        'smtp_host' => 'ssl://smtp.googlemail.com', 
        'smtp_port' => 465, 
        'smtp_user' => '[email protected]', 
        '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('[email protected]'); 
    $this->email->to('[email protected]'); 
    $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: <[email protected]> 
Mime-Version: 1.0 

Заранее спасибо.

+0

код выглядит хорошо, и конфигурации, а также, но я проблемы с Gmail счета сами - проверьте настройки в Gmail счета, https://support.google.com/ счета/ответ/6010255? hl = ru –

ответ

3

Код совершенный.

Вам необходимо использовать Пароль приложения gmail не пароль gmail. Укажите пароль приложения из настроек gmail и укажите пароль здесь.

Будет работать отлично. Смотрите больше от HERE

процесса для создания пароля приложения в Gmail:

  1. Посетите App passwords page. Вас могут попросить войти в свой аккаунт Google.
  2. В нижней части нажмите «Выбрать приложение» и выберите приложение, которое вы используете.
  3. Нажмите «Выбрать устройство» и выберите устройство, которое вы используете.
  4. Выберите Generate.
  5. Следуйте инструкциям, чтобы ввести пароль приложения (16-символьный код на желтой полосе) на вашем устройстве.
  6. Выберите Готово.

Как только вы закончите, вы еще не увидите этот код пароля приложения. Однако вы увидите список приложений и устройств, для которых вы создали пароли приложений.

+0

Спасибо, но я не могу найти настройки для установки пароля приложения. –

+0

@ R.Karki Я включил процесс получения App Password. –

+0

Большое вам спасибо за помощь. Хотя я не смог найти точные настройки, как вы упомянули выше, однако я включил доступ для менее безопасных приложений в настройках gmail, и это сработало. Еще раз, спасибо. –

0

Попробуйте это ..

Создайте файл с именем «email.php» внутри папки «приложения/конфигурации» и добавьте следующие настройки к нему.

<?php 
    $config['protocol'] = 'smtp'; 
    $config['smtp_host'] = 'ssl://smtp.gmail.com'; //change this 
    $config['smtp_port'] = '465'; 
    $config['smtp_user'] = '[email protected]'; //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('[email protected]', 'sender name'); 
    $this->email->to('[email protected]'); 
    $this->email->cc('[email protected]'); 
    $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!"; 
} 
?> 
+0

Чтобы создать библиотеку, я должен поместить файл в 'application/config'? –

+0

Благодарим за помощь. Вышеприведенный код, который я представил, работал отлично после того, как я включил доступ для менее безопасных приложений в настройках gmail. –