Senden von E-Mails mit Gmail SMTP mit Codeigniter-E-Mail-Bibliothek

Lesezeit: 6 Minuten

Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Shiv

<?php
class Email extends Controller {

    function Email()
    {
        parent::Controller();   
        $this->load->library('email');
    }

    function index()
    {
        $config['protocol']    = 'smtp';
        $config['smtp_host']    = 'ssl://smtp.gmail.com';
        $config['smtp_port']    = '465';
        $config['smtp_timeout'] = '7';
        $config['smtp_user']    = 'my[email protected]';
        $config['smtp_pass']    = '*******';
        $config['charset']    = 'utf-8';
        $config['newline']    = "\r\n";
        $config['mailtype'] = 'text'; // or html
        $config['validation'] = TRUE; // bool whether to validate email or not      

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

        $this->email->from('[email protected]', 'myname');
        $this->email->to('[email protected]'); 

        $this->email->subject('Email Test');
        $this->email->message('Testing the email class.');  

        $this->email->send();

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

        $this->load->view('email_view');
    }
}

Ich bekomme diesen Fehler:

A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Connection timed out)
Filename: libraries/Email.php
Line Number: 1641

Verwenden PORT 25/587

Ich habe diesen Fehler:

A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:func(119):reason(252)
Filename: libraries/Email.php
Line Number: 1641

Ich möchte phpmailer jetzt nicht verwenden. (Eigentlich habe ich versucht, phpmailer zu verwenden, aber ich bin gescheitert).

Wie löse ich dieses Problem Jungs?

  • $config['validation'] = TRUE falsch ist, ist der Indexschlüssel bestätigen also verwenden $config['validate'] = TRUE

    – Delmo

    15. Oktober 2014 um 14:22 Uhr

Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Teej

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'xxx',
    'smtp_pass' => 'xxx',
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

// Set to, from, message, etc.

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

Von dem CodeIgniter-Foren

  • +1, Beachten Sie, dass alle Array-Elemente in einfache Anführungszeichen eingeschlossen sind und nur Parameter von $this->email->set_newline wird in doppelte Anführungszeichen eingeschlossen. Das ist sehr wichtig, sonst funktioniert es nicht.

    – Naveen Kumar

    2. Mai 2012 um 6:56 Uhr

  • das liegt daran, dass in PHP (und einigen anderen Sprachen) \n bedeutet nur neue Zeile, wenn es in doppelten Anführungszeichen steht. In einfachen Anführungszeichen bedeutet es die wörtlichen Zeichen \n.

    – DMin

    4. August 2012 um 6:46 Uhr

  • Die Lösung war,thnx: für $this->email->set_newline(“\r\n”)

    – Zu cool

    9. Dezember 2015 um 13:05 Uhr

  • @NaveenKumar kann die E-Mail immer noch nicht senden. bekomme keine antwort rein $result = $this->email->send();

    – Pathik Vejani

    30. März 2016 um 19:29 Uhr

  • @ThorpeObazee Sir Können wir der Mail-Konfigurationsdatei weitere Konfigurationen hinzufügen. wie $config[‘subjectEnquiry’] => “Anfrage-E-Mail”; oder $config[‘subjectSuccess’] => “Daten erfolgreich hinzugefügt”;

    – ankit suthar

    30. März 2017 um 8:54 Uhr

1646916847 338 Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Cerebro

Sie müssen SSL in Ihrer PHP-Konfiguration aktivieren. Aufladen php.ini und finden Sie eine Zeile mit dem folgenden:

;extension=php_openssl.dll

Kommentieren Sie es aus. 😀

(indem das Semikolon aus der Anweisung entfernt wird)

extension=php_openssl.dll

  • Dies gilt nur für Windows-Server. Verwenden Sie phpinfo(), um zu sehen, ob Sie die richtigen Sockets verfügbar haben und ob openssl auf Ihrem Server ist.

    – jjwdesign

    25. Oktober 2011 um 18:28 Uhr

1646916847 175 Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Lukas

Laut den CI-Dokumenten (CodeIgniter-E-Mail-Bibliothek)…

Wenn Sie es vorziehen, die Einstellungen nicht mit der obigen Methode festzulegen, können Sie sie stattdessen in eine Konfigurationsdatei einfügen. Erstellen Sie einfach eine neue Datei namens email.php und fügen Sie das Array $config in dieser Datei hinzu. Dann speichern Sie die Datei unter config/email.php und sie wird automatisch verwendet. Sie müssen die Funktion $this->email->initialize() NICHT verwenden, wenn Sie Ihre Einstellungen in einer Konfigurationsdatei speichern.

Ich konnte dies zum Laufen bringen, indem ich alle Einstellungen vorgenommen habe application/config/email.php.

$config['useragent'] = 'CodeIgniter';
$config['protocol'] = 'smtp';
//$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'YOURPASSWORDHERE';
$config['smtp_port'] = 465; 
$config['smtp_timeout'] = 5;
$config['wordwrap'] = TRUE;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['validate'] = FALSE;
$config['priority'] = 3;
$config['crlf'] = "\r\n";
$config['newline'] = "\r\n";
$config['bcc_batch_mode'] = FALSE;
$config['bcc_batch_size'] = 200;

Dann habe ich in einer der Controller-Methoden so etwas wie:

$this->load->library('email'); // Note: no $config param needed
$this->email->from('[email protected]', '[email protected]');
$this->email->to('[email protected]');
$this->email->subject('Test email from CI and Gmail');
$this->email->message('This is a test.');
$this->email->send();

Außerdem musste ich, wie Cerebro schrieb, diese Zeile in meiner php.ini-Datei auskommentieren und PHP neu starten:

extension=php_openssl.dll

  • würden Sie mir den Code der E-Mail-Bibliothek geben, jedes Mal, wenn ich $this->load->library(’email’) sah, aber ich habe keine E-Mail-Bibliothek, was kann ich tun? Bitte geben Sie mir einen Weg, ich bin neuer in CI & Codierung. Danke 🙂

    – Prakash Pokhrel

    16. Januar 2018 um 8:46 Uhr

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

Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Chamil Sanjeewa

Senden Sie eine HTML-E-Mail über Codeiginator

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



    $this->email->clear();
    $config['mailtype'] = "html";
    $this->email->initialize($config);
    $this->email->set_newline("\r\n");
    $this->email->from('[email protected]', 'Website');
    $list = array('[email protected]', '[email protected]');
    $this->email->to($list);
    $data = array();
    $htmlMessage = $this->parser->parse('messages/email', $data, true);
    $this->email->subject('This is an email test');
    $this->email->message($htmlMessage);



    if ($this->email->send()) {
        echo 'Your email was sent, thanks chamil.';
    } else {
        show_error($this->email->print_debugger());
    }

1646916848 197 Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
leonbloy

Eine andere Option, die ich auf einem Linux-Server mit Postfix habe:

Konfigurieren Sie zunächst CI-E-Mail, um das E-Mail-System Ihres Servers zu verwenden: z. B. in email.phpzum Beispiel

# alias to postfix in a typical Postfix server
$config['protocol'] = 'sendmail'; 
$config['mailpath'] = '/usr/sbin/sendmail'; 

Konfigurieren Sie dann Ihr Postfix so, dass die E-Mail an Google weitergeleitet wird (möglicherweise abhängig von der Absenderadresse). Sie müssen wahrscheinlich Ihre Benutzerpassworteinstellungen eingeben /etc/postfix/sasl_passwd
(Dokumente)

Dies ist viel einfacher (und weniger fragmentiert), wenn Sie eine Linux-Box haben, die bereits so konfiguriert ist, dass sie einige/alle ausgehenden E-Mails an Google sendet.

1646916848 336 Senden von E Mails mit Gmail SMTP mit Codeigniter E Mail Bibliothek
Shiplu

Vielleicht befinden sich Ihr Hosting-Server und Ihr E-Mail-Server am selben Ort und Sie müssen sich nicht für die SMTP-Authentifizierung entscheiden. Behalten Sie einfach alles als Standard bei:

$config = array(        
    'protocol' => '',
    'smtp_host' => '',
    'smtp_port' => '',
    'smtp_user' => '[email protected]',
    'smtp_pass' => '**********'
    );

oder

$config['protocol'] = '';
$config['smtp_host'] = '';
$config['smtp_port'] = ;
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'password';

Für mich geht das.

  • Funktioniert bei mir nicht ohne $config[‘crlf’] = “\r\n”; $config[‘newline’] = “\r\n”;

    – BoCyrill

    24. August 2016 um 18:25 Uhr


987990cookie-checkSenden von E-Mails mit Gmail SMTP mit Codeigniter-E-Mail-Bibliothek

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy