So senden Sie E-Mails mit CodeZünder
⚡ Intelligente Zusammenfassung
CodeIgniter Sending Email nutzt die integrierte E-Mail-Bibliothek des Frameworks, um Nachrichten per SMTP oder über den lokalen Mailserver zuzustellen. Dieses Beispiel erstellt eine E-Mail-Konfigurationsdatei, eine Kontaktformularansicht und einen Controller, der die Formulareingaben liest und die Nachricht versendet.

E-Mail spielt in Webanwendungen eine wichtige Rolle. Bei der Registrierung senden wir Nutzern beispielsweise eine E-Mail zur Bestätigung ihrer E-Mail-Adresse und zur Anmeldung. Wir nutzen E-Mail auch, um vergessene Passwörter zurückzusetzen und Rechnungen sowie Quittungen an Kunden zu versenden. CodeMit Igniter ist es für uns kinderleicht, E-Mails aus unserer Anwendung heraus über verschiedene Optionen zu versenden.
CodeIgniter verfügt über eine integrierte E-Mail-Bibliothek, die wir beim Versenden von E-Mails nutzen können.
CodeIgniter-E-Mail-Konfiguration
Wir benötigen einen zentralen Ort, an dem wir die E-Mail-Einstellungen verwalten können. CodeIgniter wird ohne Konfigurationsdatei für E-Mails ausgeliefert, 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 beim Senden von E-Mails verwendet werden soll. Dies könnte beispielsweise sein: Gmail SMTP-Einstellungen oder SMTP-Einstellungen von Ihrem Host
- 'smtp_host' => 'smtp.example.com' gibt den SMTP-Host an. Wenn Sie beispielsweise Folgendes verwenden möchten: Gmail Dann hätte man so etwas wie smtp.gmail.com
- 'smtp_port' => 465, ein offener Port auf dem angegebenen SMTP-Host, der für SMTP-E-Mails 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-Adresse
- 'smtp_crypto' => 'ssl', gibt die zu verwendende Verschlüsselungsmethode an, z. B. ssl, tls usw.
- Mit dem Parameter 'mailtype' => 'text' wird der E-Mail-Typ festgelegt. Dies kann je nach Bedarf entweder reiner 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, wenn auf TRUE gesetzt, ist der Zeilenumbruch aktiviert. Wenn auf FALSE gesetzt, ist der Zeilenumbruch deaktiviert.
Hinweis: 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 im Verzeichnis 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(0)?>" 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-Adresse, Betreff und Nachricht entgegennimmt und die Parameter dann an die E-Mail-Route weiterleitet.
CodeIgniter E-Mail-Controller
Nun erstellen wir den Controller, der für den E-Mail-Versand zuständig sein wird.
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,
- Die Klasse `EmailController` erweitert `CI_Controller` {…} und definiert unseren E-Mail-Controller, der von der übergeordneten Klasse erbt. CodeZündsteuergerät.
- 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
- Wenn `$this->email->send()` ausgeführt wird, wird versucht, die E-Mail zu senden. Bei erfolgreichem Versand wird die Meldung „Ihre E-Mail wurde erfolgreich gesendet“ angezeigt, andernfalls werden Debug-Informationen zu möglichen Fehlerursachen ausgegeben.
Lassen Sie uns nun die E-Mail-Routen definieren.
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 das Kontaktformular nun im Webbrowser laden.
Starten wir den integrierten PHP-Server.
Öffnen Sie das Terminal oder die Befehlszeile und navigieren Sie zum Stammverzeichnis Ihrer Anwendung. In meinem Fall befindet sich das Stammverzeichnis unter C:\Sites\ci-app.
cd C:\Sites\ci-app
Starten Sie den Server mit folgendem Befehl
php -S localhost:3000
Laden Sie Folgendes: URL in Ihrem 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 anschließend auf „E-Mail senden“. Wenn Ihre E-Mail-Einstellungen korrekt sind, sollte Ihnen eine Erfolgsmeldung angezeigt werden.
Wie man HTML-E-Mails und Anhänge versendet CodeZünder
Dieselbe E-Mail-Bibliothek kann auch formatierte Nachrichten und Dateien versenden. Zwei kleine Änderungen genügen, um aus dem obigen Klartextbeispiel eine HTML-E-Mail mit Anhang zu erstellen.
$this->email->set_mailtype('html'); $this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>'); $this->email->attach('/path/to/report.pdf');
- set_mailtype('html'): teilt der Bibliothek mit, dass der Nachrichtentext HTML enthält, sodass Tags wie Überschriften und Links im Posteingang des Empfängers angezeigt werden.
- befestigen(): Fügt der Nachricht eine Datei von einem Serverpfad hinzu; rufen Sie die Funktion einmal für jede Datei vor send() auf.
Denken Sie daran, dass HTML-E-Mails immer auch eine Klartext-Alternative enthalten sollten und dass große Anhänge von strengen Mailservern abgelehnt werden können.

