Kako poslati e-poštu pomoću Codeupaljač

⚡ Pametni sažetak

CodeIgniter Sending Email oslanja se na ugrađenu biblioteku e-pošte okvira za dostavu poruka putem SMTP-a ili lokalnog poslužitelja pošte. Ovaj primjer stvara konfiguracijsku datoteku e-pošte, prikaz kontaktnog obrasca i kontroler koji čita unos obrasca i šalje poruku.

  • 📧 Ugrađena biblioteka: Biblioteka za e-poštu šalje poštu s minimalnim kodom i podržava SMTP, Sendmail i PHP transport pošte.
  • Centralna konfiguracija: Prilagođena konfiguracijska datoteka email.php pohranjuje protokol, host, port, korisnika i lozinku tako da postavke ostaju na jednom mjestu.
  • 🔓 SMTP vjerodajnice: Obavezne su valjane vrijednosti smtp_host, smtp_user i smtp_pass; lažni parametri nikada neće isporučiti stvarnu e-poštu.
  • 📝 Obrazac za kontrolora: Prikaz kontakta prikuplja primatelja, predmet i poruku, koje kontroler čita pomoću ulazne biblioteke.
  • 📤 Slanje toka: Kontroler postavlja od, do, predmet i poruku, zatim poziva send() i ispisuje izvješće o debuggeru u slučaju neuspjeha.
  • 📎 HTML i datoteke: Prebacivanjem mailtype-a na html i pozivanjem attach() funkcije možete slati formatirane poruke s datotekama u privitku.
  • 🤖 AI pomoć: Alati umjetne inteligencije mogu generirati kontroler e-pošte, provjeriti unos obrasca i dijagnosticirati pogreške SMTP veze iz izlaza programa za ispravljanje pogrešaka.

CodeIgniter šalje e-poštu

E-pošta je vrlo važna u web aplikacijama. Kada se korisnik prijavi, možda ćemo mu htjeti poslati e-poštu kako bismo potvrdili njegovu adresu e-pošte i omogućili mu da potvrdi pretplatu. Također koristimo e-poštu za resetiranje zaboravljenih lozinki i slanje računa i potvrda kupcima. CodeIgniter nam iznimno olakšava slanje e-pošte iz naše aplikacije koristeći razne opcije.

CodeIgniter ima ugrađenu biblioteku e-pošte s kojom možemo raditi prilikom slanja e-pošte.

CodeKonfiguracija e-pošte zapaljivača

Moramo imati centralno mjesto gdje možemo upravljati postavkama e-pošte. CodeIgniter ne dolazi s konfiguracijskom datotekom za e-poštu, pa ćemo je morati sami kreirati.

Napravite datoteku email.php u direktoriju application/config

Dodajte sljedeći kod u 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
);

OVDJE,

  • 'protocol' => 'smtp' određuje protokol koji želite koristiti prilikom slanja e-pošte. To može biti Gmail SMTP postavke ili SMTP postavke vašeg hosta
  • 'smtp_host' => 'smtp.example.com' određuje SMTP host. Na primjer, ako želite koristiti Gmail onda biste imali nešto poput smtp.gmail.com
  • 'smtp_port' => 465, otvoreni port na navedenom SMTP hostu koji je konfiguriran za SMTP poštu
  • 'smtp_user' => 'no-reply@example.com', adresa e-pošte koja će se koristiti kao pošiljatelj prilikom slanja e-pošte. Ovo bi trebala biti važeća adresa e-pošte koja postoji na poslužitelju
  • 'smtp_pass' => '12345!', lozinka za navedenu SMTP korisničku e-poštu
  • 'smtp_crypto' => 'ssl', određuje metodu šifriranja koja će se koristiti, npr. ssl, tls itd.
  • 'mailtype' => 'text', postavlja vrstu pošte koja će se koristiti. To može biti običan tekst ili HTML, ovisno o vašim potrebama.
  • 'smtp_timeout' => '4', specificira vrijeme u sekundama koje bi trebalo proteći prilikom pokušaja spajanja na glavno računalo prije nego što se izbaci iznimka vremenskog ograničenja.
  • 'charset' => 'iso-8859-1', definira skup znakova koji će se koristiti prilikom slanja e-pošte.
  • 'prelom riječi' => TRUE, ako je postavljeno na TRUE, prelom riječi je omogućen. Ako je postavljeno na FALSE, prelom riječi nije omogućen

bilješke: za slanje e-pošte na posao, trebali biste dati valjane konfiguracijske parametre. Dummy parametri neće moći slati e-poštu.

CodePrikaz e-pošte za upaljač

U ovom odjeljku izradit ćemo prikaz koji će poslati e-poštu primatelju.

Stvorite novi imenik e-pošte u aplikaciji/prikazima

Napravite novu datoteku contact.php u application/views/email

Dodajte sljedeći kod u 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>

OVDJE,

  • Imamo osnovni HTML obrazac koji prihvaća e-poštu, predmet i poruku, a zatim prosljeđuje parametre ruti e-pošte.

CodeKontroler e-pošte zapaljivača

Sada kreirajmo kontroler koji će obrađivati ​​slanje e-pošte.

Napravite novu datoteku EmailController.php u application/controllers/EmailController.php

Dodajte sljedeći kod u 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());
}
}
}

OVDJE,

  • class EmailController extends CI_Controller {…} definira naš kontroler e-pošte koji proširuje roditelja CodeKontroler paljenja.
  • javna funkcija __construct() {…} definira podređeni konstruktor koji poziva roditeljsku metodu konstruktora.
  • javna funkcija index() {…} definira metodu indeksiranja koja prikazuje obrazac za kontakt
  • funkcija send() {…} definira metodu koja šalje e-poštu
    • $this->load->config('email'); učitava postavke konfiguracije e-pošte
    • $this->load->library('email'); učitava biblioteku e-pošte
    • $from = $this->config->item('smtp_user'); dobiva ID pošiljatelja iz konfiguracijske datoteke e-pošte koju smo definirali.
    • $to = $this->input->post('to'); dobiva vrijednost do iz poslanog obrasca
    • $subject = $this->input->post('subject'); postavlja naslov e-pošte iz obrasca
    • $message = $this->input->post('message'); postavlja poruku e-pošte iz obrasca
    • $this->email->set_newline(“\r\n”); definira znakove novog retka za e-poštu
    • $this->e-mail->from($from); postavlja adresu e-pošte pošiljatelja
    • $this->e-mail->to($to); postavlja adresu e-pošte primatelja
    • $this->e-mail->subject($subject); postavlja predmet e-pošte
    • $this->e-mail->message($message); postavlja poruku e-pošte
    • ako ($this->email->send()) {…} pokuša poslati e-poštu. Ako je e-pošta uspješno poslana, prikazuje se poruka „Vaša e-pošta je uspješno poslana“, inače se ispisuju informacije o otklanjanju pogrešaka o tome što je možda pošlo po zlu.

Sada definirajmo rute e-pošte.

Rute e-pošte

Dodajte sljedeće rute u application/config/routes.php

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

Sada možemo učitati kontaktni obrazac u web pregledniku.

Pokrenimo ugrađeni PHP poslužitelj.

Otvorite terminal ili naredbeni redak i idite do korijenske mape vaše aplikacije. U mom slučaju, korijenska mapa se nalazi na disku C:\Sites\ci-app

cd C:\Sites\ci-app

Pokrenite poslužitelj pomoću sljedeće naredbe

php -S localhost:3000

Učitajte sljedeće URL u vašem web pregledniku: http://localhost:3000/send-email

Trebali biste moći vidjeti sljedeći obrazac

Rute e-pošte

Unesite e-poštu primatelja, predmet i poruku e-pošte, a zatim kliknite Pošalji e-poštu. Ako je konfiguracija e-pošte ispravno postavljena, trebali biste vidjeti poruku o uspjehu.

Kako slati HTML e-poruke i priloge u Codeupaljač

Ista biblioteka e-pošte može slati bogato formatirane poruke i datoteke. Dvije male promjene pretvaraju gornji primjer običnog teksta u HTML e-poštu s privitkom.

$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'): govori biblioteci da tijelo sadrži HTML, pa se oznake poput naslova i poveznica prikazuju u pristigloj pošti primatelja.
  • priloži(): dodaje datoteku s putanje poslužitelja u poruku; pozovite je jednom za svaku datoteku prije send().

Imajte na umu da HTML e-poruke i dalje trebaju sadržavati alternativu običnog teksta, a velike privitke mogu odbaciti strogi poslužitelji pošte.

Pitanja i odgovori

Localhost obično nema poslužitelj pošte, pa protokol pošte tiho ruši. Prebacite protokol na smtp i navedite pravog SMTP hosta, korisnika i lozinku ili upotrijebite uslugu kao što je Mailzamka za lokalno testiranje.

Postavite smtp_host na smtp.gmail.com, smtp_port na 465 sa ssl-om i smtp_user na svoj Gmail adresa. Koristite Google Lozinka aplikacije umjesto vaše uobičajene lozinke, budući da Gmail blokira osnovne prijave lozinkom.

Protokol pošte koristi PHP-ovu funkciju mail(), sendmail poziva lokalnu binarnu datoteku poslužitelja, a smtp se povezuje s vanjskim poslužiteljem pošte s vjerodajnicama. SMTP je najpouzdaniji za dostavu i autentifikaciju.

Da. Umjetna inteligencija može izgraditi kontroler, dodati validaciju obrasca za primatelja i subjekt te uključiti rukovanje uspjehom i pogreškama. RevPogledajte SMTP postavke i dodajte ograničenje brzine prije korištenja u produkciji.

Da. Zalijepite izlaz print_debugger() i umjetna inteligencija može interpretirati neuspjehe rukovanja SMTP-om, pogreške autentifikacije ili probleme s portom, a zatim preporučiti ispravljene vrijednosti hosta, porta ili šifriranja koje treba isprobati.

Sažmite ovu objavu uz: