it-swarm.com.ru

SMTP на CodeIgniter показывает успех, но электронная почта не доставляется на учетную запись Gmail

Я пытаюсь настроить SMTP на CodeIgniter. Все работает нормально, и я получаю сообщение об успехе на странице, что электронное письмо отправлено без ошибок. Но электронная почта не доставляется.

Вот код, который я использую:

$config = Array(
'protocol' => 'smtp',
'smtp_Host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => '[email protected]', 
'smtp_pass' => '***', 
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);

$this->email->from('[email protected]', 'Explendid Videos');
$this->email->to('[email protected]');
$this->email->reply_to('[email protected]', 'Explendid Videos');


$this->email->subject('Explendid Video - Contact form');

$message = "Contact form\n\n";
$message .= "Name: ". $_POST['name'] . "\n";
$message .= "Phone: ". $_POST['phone'] . "\n";
$message .= "Email: ". $_POST['email'] . "\n";

$this->email->message($message);

$this->email->send();

Что может быть причиной того, что электронная почта на самом деле не доставлена.

14
Wasif Khalil

Измените это на следующее:

$ci = get_instance();
$ci->load->library('email');
$config['protocol'] = "smtp";
$config['smtp_Host'] = "ssl://smtp.gmail.com";
$config['smtp_port'] = "465";
$config['smtp_user'] = "[email protected]"; 
$config['smtp_pass'] = "yourpassword";
$config['charset'] = "utf-8";
$config['mailtype'] = "html";
$config['newline'] = "\r\n";

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

$ci->email->from('[email protected]', 'Blabla');
$list = array('[email protected]');
$ci->email->to($list);
$this->email->reply_to('[email protected]', 'Explendid Videos');
$ci->email->subject('This is an email test');
$ci->email->message('It is working. Great!');
$ci->email->send();
30
RobinCominotto

вот работа для меня на сервере Apache2, ci 2.1.4: все очень просто: сначала создайте файл с именем email.php в вашем каталоге application/config, затем введите в них следующий код ~>

<?php
$config['protocol'] = 'smtp';
$config['smtp_Host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'u'r gmail account';
$config['smtp_pass'] = 'password of u'r account';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
?>

затем создайте файл с именем email.php в вашем каталоге application/controllers, затем введите этот код ~>

    <?php
    class Email extends CI_Controller
    {

    function send()
    {
    // Loads the email library
    $this->load->library('email');
    // FCPATH refers to the CodeIgniter install directory
    // Specifying a file to be attached with the email
    // if u wish attach a file uncomment the script bellow:
    //$file = FCPATH . 'yourfilename.txt';
    // Defines the email details
    $this->email->from('[email protected]', 'ur Name');
    $this->email->to('[email protected]');
    $this->email->subject('Email Test');
    $this->email->message('Testing the email class.');
    //also this script
    //$this->email->attach($file);
    // The email->send() statement will return a true or false
    // If true, the email will be sent
    if ($this->email->send()) {
    echo "you are luck!";
    } else {
    echo $this->email->print_debugger();
    }
    }

    }
    ?>
4
user2963512

замещать 

$config['protocol'] = 'smtp';

в

$config['protocol'] = 'sendmail';
3

Используйте следующий код

И не забудьте, что не можете выполнить следующие две настройки безопасности в Google.

1) https://www.google.com/settings/security/lesssecureapps << включите его

2) https://accounts.google.com/b/0/DisplayUnlockCaptcha << Нажмите продолжить

** Отключите двухэтапную проверку, если она включена.

$config = Array(
        'protocol' => 'smtp',
        'smtp_Host' => 'ssl://smtp.gmail.com',
        'smtp_port' => 465,
        'smtp_user' => '[email protected]',    //email id
        'smtp_pass' => 'xxxxxxxxxxx',            // password
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");

    $this->email->from('[email protected]','my name');
    $this->email->to("[email protected]"); // email array
    $this->email->subject('email subject');   
    $this->email->message("my mail body");

    $result = $this->email->send();


    show_error($this->email->print_debugger());  // for debugging purpose :: remove this once it works...
0
kuma DK

Вы проверили свой файл php.ini? Попытайся. Если нет, то, возможно, вы также можете попробовать SPF . SPF или Sender Policy Framework - это новая технология, которая позволяет легко обнаруживать спам. Gmail соблюдает SPF, если вы не помечаете эти письма вручную как спам. Независимо от этого, если вы получили электронные письма на другой адрес, значит, они тоже пришли в Gmail. Тщательно проверяйте спам, поскольку Gmail не удаляет электронные письма даже при очень высоком подозрении на спам, а попадает в папку «Спам».

Вы можете настроить SPF, который позволит вашему веб-серверу отправлять электронные письма, что приведет к тому, что Gmail будет принимать электронные письма, отправленные вашим веб-сервером, как подлинные. См. Http://www.mydigitallife.info/how-to-set-up-and-create-sender-policy-framework-spf-domain-dns-txt-record-with-wizard/ и мастер от Microsoft.

0
damek132

вы можете изменить этот сценарий, для отладки вашей проблемы,

$this->email->send();

в

if($this->email->send())
{
    echo 'Your email was sent.';
}

else
{
    show_error($this->email->print_debugger());
}
0
Triyana Syahfrudin

Я просто изменил код из RobinCominotto , чтобы он работал в office365. 

PS: у меня получилось, когда я поместил его в контроллер и вызвал эту функцию именно так. Когда я размещаю эти конфиги на email.php (файл конфигурации) больше не работает :(

    $ci = get_instance();
    $ci->load->library('email');
    $config['protocol'] = "smtp";
    $config['smtp_Host'] = "smtp.office365.com";
    $config['smtp_port'] = "587";
    $config['smtp_user'] = "<HERE COMES YOUR EMAIL>"; 
    $config['smtp_pass'] = "<HERE COMES THE PASSWORD OF EMAIL>";
    $config['charset'] = "utf-8";
    $config['mailtype'] = "html";
    $config['newline'] = "\r\n";

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

    $ci->email->from('<HERE COMES YOUR EMAIL>', 'Blabla');
    $list = array('<HERE COMES TO EMAIL>', '<HERE COMES TO EMAIL>');
    $ci->email->to($list);
    $this->email->reply_to('<HERE COMES YOUR EMAIL>', 'Explendid Videos');
    $ci->email->subject('This is an email test');
    $ci->email->message('It is working. Great!');
    $ci->email->send();
    print_r($ci->email->print_debugger());
0
Vitor Vannuchi