So senden Sie E-Mails mit CodeIgniter

E-Mail ist in Webanwendungen sehr wichtig. Wenn sich ein Benutzer anmeldet, möchten wir ihm möglicherweise eine E-Mail senden, um seine E-Mail-Adresse zu bestätigen und dem Benutzer die Bestätigung des Abonnements zu ermöglichen. Wir verwenden E-Mail auch, um vergessene Passwörter zurückzusetzen, Rechnungen und Quittungen an Kunden zu senden usw. CodeIgniter macht es uns mithilfe einer Vielzahl von Optionen super einfach, E-Mails aus unserer Anwendung zu senden.

CodeIgniter verfügt über eine integrierte E-Mail-Bibliothek, mit der wir beim Senden von E-Mails arbeiten können.

CodeIgniter-E-Mail-Konfiguration

Wir benötigen einen zentralen Ort, an dem wir die E-Mail-Einstellungen verwalten können. CodeIgniter verfügt nicht über eine Konfigurationsdatei für E-Mails, daher müssen wir selbst eine erstellen.

Erstellen Sie eine Datei email.php im Verzeichnis application/config

Fügen Sie den folgenden Code zu email.php hinzu

<?php defined('BASEPATH') OR exit('No direct script access allowed');

$config = array(
    'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
    'smtp_host' => 'smtp.example.com', 
    'smtp_port' => 465,
    'smtp_user' => 'no-reply@example.com',
    'smtp_pass' => '12345!',
    'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
    'mailtype' => 'text', //plaintext 'text' mails or 'html'
    'smtp_timeout' => '4', //in seconds
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

HIER,

  • 'protocol' => 'smtp', gibt das Protokoll an, das Sie beim Senden von E-Mails verwenden möchten. Dies können die SMTP-Einstellungen von Gmail oder die SMTP-Einstellungen Ihres Hosts sein.
  • 'smtp_host' => 'smtp.example.com', gibt den SMTP-Host an. Wenn Sie beispielsweise Gmail verwenden möchten, benötigen Sie etwas wie smtp.gmail.com
  • 'smtp_port' => 465, ein offener Port auf dem angegebenen SMTP-Host, der für SMTP-Mail konfiguriert wurde
  • 'smtp_user' => 'no-reply@example.com', die E-Mail-Adresse, die beim Senden von E-Mails als Absender verwendet wird. Dies sollte eine gültige E-Mail-Adresse sein, die auf dem Server vorhanden ist
  • 'smtp_pass' => '12345!', das Passwort für die angegebene SMTP-Benutzer-E-Mail
  • 'smtp_crypto' => 'ssl', gibt die zu verwendende Verschlüsselungsmethode an, also SSL, TLS usw.
  • „E-Mail-Typ“ => „Text“, legt den zu verwendenden E-Mail-Typ fest. Dies kann je nach Bedarf einfacher Text oder HTML sein.
  • 'smtp_timeout' => '4', gibt die Zeit in Sekunden an, die beim Versuch, eine Verbindung zum Host herzustellen, vergehen soll, bevor eine Timeout-Ausnahme ausgelöst wird.
  • 'charset' => 'iso-8859-1', definiert den beim Senden von E-Mails zu verwendenden Zeichensatz.
  • 'wordwrap' => TRUE wird auf TRUE gesetzt, dann ist der Zeilenumbruch aktiviert. Wenn es auf FALSE gesetzt ist, ist der Zeilenumbruch nicht aktiviert

Note: Damit das Senden von E-Mails funktioniert, sollten Sie gültige Konfigurationsparameter angeben. Mit Dummy-Parametern können keine E-Mails gesendet werden.

CodeIgniter E-Mail-Ansicht

In diesem Abschnitt erstellen wir die Ansicht, die die E-Mail an den Empfänger sendet.

Erstellen Sie eine neue Verzeichnis-E-Mail in Anwendung/Ansichten

Erstellen Sie eine neue Datei contact.php application/views/email

Fügen Sie den folgenden Code zu application/views/email/contact.php hinzu

<!DOCTYPE html>
<html>
    <head>
        <title>CodeIgniter Send Email</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <h3>Use the form below to send email</h3>
            <form method="post" action="<?=base_url('email')?>" enctype="multipart/form-data">
                <input type="email" id="to" name="to" placeholder="Receiver Email">
                <br><br>
                <input type="text" id="subject" name="subject" placeholder="Subject">
                <br><br>
                <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
                <br><br>
                <input type="submit" value="Send Email" />
            </form>
        </div>
    </body>
</html>

HIER,

  • Wir haben ein einfaches HTML-Formular, das E-Mail, Betreff und Nachricht akzeptiert und dann die Parameter an die E-Mail-Weiterleitung übergibt.

CodeIgniter E-Mail-Controller

Lassen Sie uns nun den Controller erstellen, der das Senden von E-Mails übernimmt

Erstellen Sie eine neue Datei EmailController.php in application/controllers/EmailController.php

Fügen Sie den folgenden Code zu EmailController.php hinzu

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class EmailController extends CI_Controller {

    public function __construct() {
        parent:: __construct();

        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('email/contact');
    }

    function send() {
        $this->load->config('email');
        $this->load->library('email');
        
        $from = $this->config->item('smtp_user');
        $to = $this->input->post('to');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        $this->email->set_newline("\r\n");
        $this->email->from($from);
        $this->email->to($to);
        $this->email->subject($subject);
        $this->email->message($message);

        if ($this->email->send()) {
            echo 'Your Email has successfully been sent.';
        } else {
            show_error($this->email->print_debugger());
        }
    }
}

HIER,

  • Klasse EmailController erweitert CI_Controller {…} definiert unseren E-Mail-Controller, der den übergeordneten CodeIgniter-Controller erweitert.
  • Die öffentliche Funktion __construct() {…} definiert den untergeordneten Konstruktor, der die übergeordnete Konstruktormethode aufruft.
  • Die öffentliche Funktion index() {…} definiert die Indexmethode, die das Kontaktformular anzeigt
  • function send() {…} definiert die Methode, die die E-Mail sendet
    • $this->load->config('email'); lädt die E-Mail-Konfigurationseinstellungen
    • $this->load->library('email'); lädt die E-Mail-Bibliothek
    • $from = $this->config->item('smtp_user'); ruft die Absender-ID aus der von uns definierten E-Mail-Konfigurationsdatei ab.
    • $to = $this->input->post('to'); Ruft den to-Wert aus dem übermittelten Formular ab
    • $subject = $this->input->post('subject'); legt den E-Mail-Betreff aus dem Formular fest
    • $message = $this->input->post('message'); legt die E-Mail-Nachricht aus dem Formular fest
    • $this->email->set_newline(“\r\n”); definiert die Zeilenumbruchzeichen für E-Mails
    • $this->email->from($from); legt die E-Mail-Adresse des Absenders fest
    • $this->email->to($to); legt die E-Mail-Adresse des Empfängers fest
    • $this->email->subject($subject); legt den E-Mail-Betreff fest
    • $this->email->message($message); legt die E-Mail-Nachricht fest
    • if ($this->email->send()) {…} versucht, die E-Mail zu senden. Wenn die E-Mail erfolgreich gesendet wurde, wird die Meldung „Ihre E-Mail wurde erfolgreich gesendet“ angezeigt, andernfalls werden Debuginformationen darüber ausgegeben, was möglicherweise schiefgelaufen ist.

Definieren wir nun die E-Mail-Routen

E-Mail-Routen

Fügen Sie die folgenden Routen zu application/config/routes.php hinzu

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

Wir können nun das Kontaktformular im Webbrowser laden

Starten wir den integrierten PHP-Server

Öffnen Sie das Terminal/die Befehlszeile und navigieren Sie zum Stammverzeichnis Ihrer Anwendung. In meinem Fall befindet sich das Stammverzeichnis im Laufwerk C:\Sites\ci-app

cd C:\Sites\ci-app

Starten Sie den Server mit dem folgenden Befehl

php -S localhost:3000

Laden Sie die folgende URL in Ihren Webbrowser: http://localhost:3000/send-email

Sie sollten das folgende Formular sehen können

E-Mail-Routen

Geben Sie die E-Mail-Adresse des Empfängers, den Betreff und die E-Mail-Nachricht ein und klicken Sie dann auf „E-Mail senden“. Wenn Ihre E-Mail-Konfigurationen richtig eingestellt sind, sollten Sie die Erfolgsmeldung sehen können.

Zusammenfassung

Die integrierte E-Mail-Bibliothek erleichtert uns das Versenden von E-Mails mit minimalem Code. Die Bibliothek ist außerdem sehr flexibel, da Sie sie entsprechend Ihren Anforderungen konfigurieren können.