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

  • 📧 Wbudowana biblioteka: Biblioteka Email umożliwia wysyłanie wiadomości e-mail przy użyciu minimalnej ilości kodu i obsługuje transport poczty SMTP, Sendmail i PHP.
  • ⚙️ Konfiguracja centralna: Plik konfiguracyjny email.php przechowuje protokół, hosta, port, użytkownika i hasło, dzięki czemu ustawienia pozostają w jednym miejscu.
  • 🔓 Dane uwierzytelniające SMTP: Wymagane są prawidłowe wartości smtp_host, smtp_user i smtp_pass; parametry fikcyjne nigdy nie dostarczą prawdziwego e-maila.
  • 📝 Formularz do Kontrolera: Widok kontaktu gromadzi dane odbiorcy, tematu i wiadomości, które kontroler odczytuje za pomocą biblioteki wejściowej.
  • 📤 Wyślij przepływ: Kontroler ustawia parametry „od”, „do”, „temat” i „wiadomość”, a następnie wywołuje metodę send() i w przypadku błędu drukuje raport debugera.
  • 📎 HTML i pliki: Zmiana mailtype na html i wywołanie attach() umożliwia wysyłanie sformatowanych wiadomości z załącznikami w postaci plików.
  • 🤖 Asystent AI: Narzędzia AI potrafią generować kontroler poczty e-mail, weryfikować dane wprowadzane w formularzu i diagnozować błędy połączenia SMTP na podstawie wyników debugera.

CodeIgniter wysyłający e-mail

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

Trasy e-mailowe

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.

FAQ

Host lokalny zazwyczaj nie ma serwera poczty, więc protokół pocztowy nie działa poprawnie. Zmień protokół na SMTP i podaj prawdziwego hosta SMTP, użytkownika i hasło lub skorzystaj z usługi takiej jak Mailpułapka dla lokalnych testów.

Ustaw smtp_host na smtp.gmail.com, smtp_port na 465 z ssl i smtp_user na swoje Gmail adres. Użyj Google Hasło aplikacji zamiast zwykłego hasła, ponieważ Gmail blokuje podstawowe logowanie hasłem.

Protokół pocztowy wykorzystuje funkcję mail() języka PHP, sendmail wywołuje lokalny plik binarny serwera, a SMTP łączy się z zewnętrznym serwerem pocztowym za pomocą danych uwierzytelniających. SMTP jest najbardziej niezawodnym protokołem do dostarczania i uwierzytelniania.

Tak. Sztuczna inteligencja może zbudować kontroler, dodać walidację formularza dla odbiorcy i tematu, a także uwzględnić obsługę powodzenia i błędów. RevSprawdź ustawienia SMTP i dodaj ograniczenie przepustowości przed użyciem w środowisku produkcyjnym.

Tak. Wklej wynik funkcji print_debugger(), a AI zinterpretuje błędy uzgadniania SMTP, błędy uwierzytelniania lub problemy z portami, a następnie zaproponuje poprawione wartości hosta, portu lub szyfrowania do wypróbowania.

Podsumuj ten post następująco: