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