Jak wysłać e-mail za pomocą CodeZapalnik
⚡ Inteligentne podsumowanie
CodeIgniter Sending Email wykorzystuje wbudowaną bibliotekę Email frameworka do dostarczania wiadomości przez SMTP lub lokalny serwer pocztowy. Ten przykład tworzy plik konfiguracyjny poczty e-mail, widok formularza kontaktowego oraz kontroler, który odczytuje dane z formularza i wysyła wiadomość.
Adres e-mail jest bardzo ważny w aplikacjach internetowych. Gdy użytkownik się zarejestruje, możemy wysłać mu wiadomość e-mail w celu weryfikacji adresu i umożliwienia mu potwierdzenia subskrypcji. Używamy również poczty e-mail do resetowania zapomnianych haseł oraz wysyłania klientom faktur i paragonów. CodeDzięki Igniterowi wysyłanie wiadomości e-mail z naszej aplikacji stało się niezwykle łatwe, przy użyciu wielu różnych opcji.
CodeIgniter ma wbudowaną bibliotekę wiadomości e-mail, z której możemy korzystać podczas wysyłania wiadomości.
CodeKonfiguracja poczty e-mail Igniter
Potrzebujemy centralnego miejsca, w którym będziemy mogli zarządzać ustawieniami poczty e-mail. CodeIgniter nie zawiera pliku konfiguracyjnego dla wiadomości e-mail, dlatego będziemy musieli utworzyć go sami.
Utwórz plik email.php w katalogu application/config
Dodaj następujący kod do email.php
<?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 );
TUTAJ,
- 'protocol' => 'smtp', określa protokół, którego chcesz używać podczas wysyłania wiadomości e-mail. Może to być Gmail Ustawienia SMTP lub ustawienia SMTP od Twojego hosta
- 'smtp_host' => 'smtp.example.com', określa hosta SMTP. Na przykład, jeśli chcesz użyć Gmail wtedy miałbyś coś takiego jak smtp.gmail.com
- 'smtp_port' => 465, otwarty port na określonym hoście SMTP, który został skonfigurowany do obsługi poczty SMTP
- 'smtp_user' => 'no-reply@example.com', adres e-mail, który będzie używany jako nadawca podczas wysyłania wiadomości e-mail. Powinien to być prawidłowy adres e-mail, który istnieje na serwerze
- 'smtp_pass' => '12345!', hasło do wskazanego adresu e-mail użytkownika SMTP
- 'smtp_crypto' => 'ssl', określa metodę szyfrowania, która ma zostać użyta, np. ssl, tls itp.
- 'mailtype' => 'text', ustawia typ wiadomości e-mail, który ma zostać użyty. Może to być zwykły tekst lub HTML, w zależności od potrzeb.
- 'smtp_timeout' => '4', określa czas w sekundach, który powinien upłynąć przy próbie połączenia z hostem, zanim zostanie zgłoszony wyjątek przekroczenia limitu czasu.
- 'charset' => 'iso-8859-1', definiuje zestaw znaków, który będzie używany podczas wysyłania wiadomości e-mail.
- 'wordwrap' => TRUE, jeśli ustawione na TRUE, zawijanie wierszy jest włączone. Jeśli ustawione na FALSE, zawijanie wierszy nie jest włączone.
Note: aby wysyłanie wiadomości e-mail działało, należy podać prawidłowe parametry konfiguracji. Parametry fikcyjne nie będą mogły wysyłać wiadomości e-mail.
CodeWidok wiadomości e-mail Igniter
W tej sekcji utworzymy widok, który będzie wysyłał wiadomość e-mail do odbiorcy.
Utwórz nowy adres e-mail katalogu w aplikacji/widoki
Utwórz nowy plik contact.php w aplikacji/views/email
Dodaj następujący kod do application/views/email/contact.php
<!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>
TUTAJ,
- Mamy podstawowy formularz HTML, który akceptuje adres e-mail, temat i treść wiadomości, a następnie przekazuje parametry do ścieżki e-mail.
CodeKontroler poczty e-mail Igniter
Utwórzmy teraz kontroler, który będzie obsługiwał wysyłanie wiadomości e-mail.
Utwórz nowy plik EmailController.php w application/controllers/EmailController.php
Dodaj następujący kod do EmailController.php
<?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()); } } }
TUTAJ,
- Klasa EmailController rozszerza CI_Controller {…} definiuje nasz kontroler poczty e-mail, który rozszerza kontroler nadrzędny CodeKontroler zapłonu.
- funkcja publiczna __construct() {…} definiuje konstruktora potomnego, który wywołuje metodę konstruktora nadrzędnego.
- funkcja publiczna indeks() {…} definiuje metodę indeksującą wyświetlającą formularz kontaktowy
- funkcja send() {…} definiuje metodę wysyłającą wiadomość e-mail
- $this->load->config('email'); ładuje ustawienia konfiguracji poczty e-mail
- $this->load->library('email'); ładuje bibliotekę poczty e-mail
- $from = $this->config->item('smtp_user'); pobiera identyfikator nadawcy z pliku konfiguracji poczty e-mail, który zdefiniowaliśmy.
- $to = $this->input->post('do'); pobiera wartość do z przesłanego formularza
- $subject = $this->input->post('subject'); ustawia temat wiadomości e-mail z formularza
- $message = $this->input->post('message'); ustawia wiadomość e-mail z formularza
- $this->email->set_newline(“\r\n”); definiuje znaki nowego wiersza dla wiadomości e-mail
- $this->email->from($from); ustawia adres e-mail nadawcy
- $this->email->to($to); ustawia adres e-mail odbiorcy
- $this->email->subject($subject); ustawia temat wiadomości e-mail
- $this->email->message($message); ustawia wiadomość e-mail
- Jeśli ($this->email->send()) {…} próbuje wysłać wiadomość e-mail. Jeśli wiadomość zostanie wysłana pomyślnie, wyświetlony zostanie komunikat „Twoja wiadomość e-mail została pomyślnie wysłana”. W przeciwnym razie wyświetlone zostaną informacje debugowania dotyczące możliwych problemów.
Zdefiniujmy teraz trasy poczty e-mail.
Trasy e-mailowe
Dodaj następujące trasy do pliku application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Możemy teraz załadować formularz kontaktowy w przeglądarce internetowej.
Uruchommy wbudowany serwer PHP.
Otwórz terminal lub wiersz poleceń i przejdź do katalogu głównego swojej aplikacji. W moim przypadku katalog główny znajduje się na dysku C:\Sites\ci-app.
cd C:\Sites\ci-app
Uruchom serwer za pomocą następującego polecenia
php -S localhost:3000
Załaduj następujące URL w Twojej przeglądarce internetowej: http://localhost:3000/send-email
Powinieneś zobaczyć następujący formularz
Wpisz adres e-mail odbiorcy, temat i treść wiadomości, a następnie kliknij „Wyślij e-mail”. Jeśli konfiguracja poczty e-mail jest prawidłowa, powinieneś zobaczyć komunikat o pomyślnym wysłaniu wiadomości.
Jak wysyłać wiadomości e-mail i załączniki w formacie HTML CodeZapalnik
Ta sama biblioteka poczty e-mail umożliwia wysyłanie bogato sformatowanych wiadomości i plików. Dwie drobne zmiany przekształcają powyższy przykład zwykłego tekstu w wiadomość e-mail w formacie HTML z załącznikiem.
$this->email->set_mailtype('html'); $this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>'); $this->email->attach('/path/to/report.pdf');
- ustaw_typ_poczty('html'): informuje bibliotekę, że treść wiadomości zawiera kod HTML, więc znaczniki, takie jak nagłówki i linki, są wyświetlane w skrzynce odbiorczej odbiorcy.
- przytwierdzać(): dodaje plik ze ścieżki serwera do wiadomości; wywołuje ją raz dla każdego pliku przed send().
Należy pamiętać, że wiadomości e-mail w formacie HTML powinny zawierać alternatywę w postaci zwykłego tekstu, a duże załączniki mogą zostać odrzucone przez rygorystyczne serwery pocztowe.


