webentwicklung-frage-antwort-db.com.de

SMTP für CodeIgniter zeigt Erfolg an, aber E-Mail-Nachrichten werden nicht an das Google Mail-Konto übermittelt

Ich versuche, SMTP auf CodeIgniter einzurichten. Alles funktioniert gut und ich erhalte eine Erfolgsmeldung auf der Seite, dass die E-Mail ohne Fehler gesendet wird. E-Mails werden jedoch nicht zugestellt.

Hier ist der Code, den ich verwende:

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

Was kann der Grund dafür sein, dass E-Mails nicht wirklich zugestellt werden?.

14
Wasif Khalil

Ändern Sie es wie folgt:

$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

hier ist Arbeit für mich auf dem Apache2-Server, ci 2.1.4: Es ist sehr einfach: Erstellen Sie zuerst eine Datei namens email.php in Ihrem Verzeichnis application/config und geben Sie dann den folgenden Code in sie ein: ~>

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

erstellen Sie dann eine Datei namens email.php in Ihrem Verzeichnis Anwendung/Controller und geben Sie diesen Code ~> ein

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

ersetzen 

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

zu

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

Verwenden Sie den folgenden Code

Und nicht froget, um zwei Sicherheitseinstellungen in Google nicht zu folgen.

1) https://www.google.com/settings/security/lesssecureapps << schalten Sie es ein

2) https://accounts.google.com/b/0/DisplayUnlockCaptcha << Klicken Sie auf "Weiter"

** Deaktivieren Sie die Bestätigung in zwei Schritten, wenn Sie sie aktiviert haben.

$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

Haben Sie Ihre php.ini-Datei überprüft? Versuch es. Wenn nicht, dann könnten Sie vielleicht auch SPF . Versuchen. SPF oder Sender Policy Framework ist eine neue Technologie, mit der Spam leicht entdeckt werden kann. Google Mail erkennt SPF an, sofern Sie diese E-Mails nicht als Spam markieren. Wenn Sie jedoch E-Mails von einer anderen Adresse erhalten haben, müssen diese auch Gmail erreicht haben. Überprüfen Sie Ihren Spam gründlich, da Google Mail auch bei sehr hohem Spam-Verdacht keine E-Mails löscht, sondern im Spam-Ordner landet.

Sie können einen SPF einrichten, der es Ihrem Webserver ermöglicht, E-Mails zu senden, was dazu führt, dass Google Mail E-Mails akzeptiert, die von Ihrem Webserver als authentisch gesendet werden. Siehe http://www.mydigitallife.info/how-to-set-up-and-create-sender-policy-framework-spf-domain-dns-txt-record-with-wizard/ und einen Assistenten von Microsoft.

0
damek132

sie können dieses Skript ändern, um Ihr Problem zu beheben.

$this->email->send();

zu

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

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

Ich habe gerade den Code von RobinCominotto geändert, damit er in Office365 funktioniert. 

PS: Ich habe es zum Laufen gebracht, als ich es in einem Controller platzierte und diese Funktion genau so aufrief. Wenn ich diese configs auf email.php (config file) stelle, funktioniert das nicht mehr :(

    $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