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

