web-dev-qa-db-fra.com

SMTP sur CodeIgniter montre le succès, mais l'e-mail n'est pas remis au compte Gmail

J'essaye d'installer SMTP sur CodeIgniter. Tout fonctionne bien et je reçois un message de succès sur la page, ce courriel est envoyé sans erreur. Mais, l'email n'est pas livré.

Voici le code que j'utilise:

$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();

Quelle peut en être la raison, le courrier électronique n'est pas réellement livré.

14
Wasif Khalil

Changez-le comme suit:

$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

voici un travail pour moi sur le serveur Apache2, ci 2.1.4: c’est très simple: d’abord, créez un fichier nommé email.php dans votre répertoire application/config puis tapez le code suivant à l’intérieur de ceux-ci ~>

<?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";
?>

puis créez un fichier nommé email.php dans votre répertoire application/controllers puis tapez ce code ~>

    <?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

remplacer 

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

à

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

Utilisez le code suivant

Et ne vous inquiétez pas pour suivre deux paramètres de sécurité dans Google.

1) https://www.google.com/settings/security/lesssecureapps << l'activer

2) https://accounts.google.com/b/0/DisplayUnlockCaptcha << Cliquez sur Continuer.

** Désactivez la vérification en 2 étapes si vous l'avez activée.

$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

Avez-vous vérifié votre fichier php.ini? Essayez-le Sinon, vous pourriez aussi essayer SPF . SPF ou Sender Policy Framework est une nouvelle technologie qui permet de détecter facilement le spam. Gmail respecte SPF, à moins que vous ne marquiez manuellement ces e-mails en tant que spam. Indépendamment de cela, si vous avez reçu des e-mails sur une autre adresse, ils doivent également avoir contacté Gmail. Vérifiez soigneusement votre courrier indésirable, car Gmail ne supprime pas les e-mails, même s'ils sont très suspects, mais se retrouvent dans le dossier Spam.

Vous pouvez configurer un fichier SPF permettant à votre serveur Web d'envoyer des courriers électroniques. Ainsi, Gmail acceptera les courriers électroniques envoyés par votre serveur Web comme authentiques. Voir http://www.mydigitallife.info/how-to-set-up-and-create-sender-policy-framework-spf-domain-dns-txt-record-with-wizard/ et un magicien de Microsoft.

0
damek132

vous pouvez changer ce script, pour déboguer votre problème,

$this->email->send();

à

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

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

Je viens de modifier le code de RobinCominotto pour le faire fonctionner dans office365. 

PS: Je l'ai fait fonctionner en le plaçant dans un contrôleur et en appelant cette fonction exactement comme ceci. Quand je place cette configuration sur email.php (fichier de configuration) ne fonctionne plus :(

    $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