SMTP-почта не отправляется - Codeigniter Email Library - PullRequest
0 голосов
/ 29 июня 2018

У меня проблемы с отправкой почты по протоколу SMTP.

Welcome.php

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

$config = array();
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.zoho.com';
$config['smtp_user'] = 'support@domain.com';
$config['smtp_pass'] = '**************';
$config['smtp_port'] = 465;
$config["smtp_crypto"] = "ssl";

$this->email->initialize($config);

$this->email->set_newline("\r\n");
$this->email->from('support@domain.com', 'Support name'); // change it to yours
$this->email->to($to);// change it to yours
$this->email->subject($subject);
$this->email->message($message);

    if($this->email->send())
    {
      echo "Success! - An email has been sent to ".$to;
    }
    else
    { 
      show_error($this->email->print_debugger());
      return false;
    }
}

Вот ошибка вывода:

An Error Was Encountered
220 mx.zohomail.com SMTP Server ready June 29, 2018 5:16:40 AM PDT 

hello: 

The following SMTP error was encountered: 
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
Date: Fri, 29 Jun 2018 12:16:40 +0000
From: "Support Name" <support@domain.com>
Return-Path: <support@domain.com>
To: recipent@gmail.com
Subject: =?ISO-8859-1?Q?=43=6F=70=79=20=61=6C=6C=20=74=68=65?=
Reply-To: <support@domain.com>
User-Agent: CodeIgniter
X-Sender: support@domain.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <5b36232840595@domain.com>
Mime-Version: 1.0


Content-Type: multipart/alternative; boundary="B_ALT_5b3623284061c"

This is a multi-part message in MIME format.
Your email application may not support this format.

--B_ALT_5b3623284061c
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Some


--B_ALT_5b3623284061c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Some Email Description=0A=0A Some Email Description

--B_ALT_5b3623284061c--

Примечание: скрипт отлично работает на локальном хосте, а также на нескольких другие хостинги, но не работающие на хостинге VPS.

Вот что нужно запомнить:

  1. Код в порядке (пробовал на разных хостингах и работает)
  2. Изменение $config['protocol'] = "smtp"; на $config['protocol'] = "sendmail"; работает. Но я хочу отправлять почту только по протоколу SMTP.
  3. Использование SMTP-протоколов Zoho Mail (smtp.zoho.com)
  4. Пробовал, гугл SMTP, еще не отправляю. (Использовал PHPMailer Library для проверки учетных данных. Он работает с ними.)

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Решение: Проблема была исправлена ​​! Преступник был Действительное имя хоста & Обратный DNS .

Подробная информация: Из-за неправильной конфигурации SMTP отвечал около 7 - 10 secs. Согласно документам , если мы не укажем smtp_timeout, по умолчанию будет использоваться значение 5 sec. Поэтому я изменил smtp_timeout со значения по умолчанию 5 sec на 10 sec и , он работает .

Выяснив, в чем проблема, обнаружил, что SMTP отвечает медленно. Не было действительного имени хоста, добавлен обратный DNS . Так что добавил. Теперь все работает как положено. Теперь я удалил поле smtp_timeout. Теперь это работает.

0 голосов
/ 30 июня 2018

у меня хобе этот код отлично работает

$Config = [
  'protocol'  => 'smtp', 
  'smtp_host' => 'smtp.zoho.com', 
  'smtp_port' =>  465, 
  'smtp_user' => 'support@domain.com', 
  'smtp_pass' => '**************', 
  'mailtype'  => 'html', 
  'charset'   => 'utf-8'
];
$this->load->library('email',$config);
$this->email->set_newline("\r\n");
$this->email->from('support@domain.com', 'Support name'); // change it to yours
$this->email->to($to);// change it to yours
$this->email->subject($subject);
$this->email->message($message);
if($this->email->send()){
   echo "Success! - An email has been sent to ".$to;
}
else{ 
   show_error($this->email->print_debugger());
   return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...