Отправка электронной почты в CodeIgniter через Gmail

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

class Email extends CI_Controller{

    public function __construct()
   {
        parent::__construct();

   }

    function index(){

        $config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'smtp_user' => 'email',
            'smtp_pass' => 'pass'
        );

        $this->load->library('email',$config);

        $this->email->set_newline("/r/n");
        $this->email->from('email', 'George');
        $this->email->to('email');
        $this->email->subject('hey this is an email');
        $this->email->message('this is the content of the email');

        if($this->email->send()){

                echo 'Your message was sent';

        }else{

            show_error($this->email->print_debugger());

        }

    }



}

5 ответов

Решение

В вашем php.ini расширение файла uncomment =php_openssl.dll

$config = Array(
            'protocol'  => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => '465',
            'smtp_user' => 'someuser@gmail.com',
            'smtp_pass' => 'password',
            'mailtype'  => 'html',
            'starttls'  => true,
            'newline'   => "\r\n"
        );

    $this->load->library('email', config);
    $this->email->from('email@gmail.com', 'George');
    $this->email->to('email@gmail.com');
    $this->email->subject('hey this is an email');
    $this->email->message('this is the content of the email');
    $this->email->send();
    echo $this->email->print_debugger();

Надеюсь, это сработает

MAMP не поставляется с расширением openssl, но вы можете создать его самостоятельно. Подробности смотрите в этом уроке.

Линия, вызывающая проблемы:

$this->email->set_newline("/r/n");

Удалите его и попробуйте отправить письмо.

Я сам сделал это успешно, но вместо этого отправил все значения в config/email.php. Эта часть не должна иметь значения.

Ну, в общем, вы пытаетесь отправить через учетную запись @gmail или свой собственный домен? Если вы пытаетесь пройти через свой собственный домен, вам нужно изменить DNS на соответствующие настройки Google:

Создать MX записи

Начните с публикации сообщений через стандартные порты smtp и убедитесь, что они работают, используя конфигурацию ниже:

индекс функции () {

$ config = Array ('protocol' => 'smtp', 'smtp_host' => 'smtp.googlemail.com', 'smtp_port' => 25, 'smtp_user' => 'email', 'smtp_pass' => 'pass ');

$ This-> load-> библиотека ('электронная почта',$ конфигурации);

$ this-> email-> from ('email', 'George'); $ This-> email-> к ('электронной почты');         $this->email->subject("эй, это электронная почта"); $ this-> email-> message ("это содержимое письма");

$ This-> email-> отправить (); }

После того, как вы попробовали это, и все это работает, прочитайте это:

http://codeigniter.com/forums/viewthread/84689/

Другие вопросы по тегам