Kuidas saata e-kirja, kasutades Codeelektrisütik

⚡ Nutikas kokkuvõte

CodeIgniter Sending Email tugineb raamistiku sisseehitatud e-posti teekile, et edastada sõnumeid SMTP või kohaliku meiliserveri kaudu. See näide loob e-posti konfiguratsioonifaili, kontaktvormi vaate ja kontrolleri, mis loeb vormi sisendit ja saadab sõnumi välja.

  • 📧 Sisseehitatud teek: E-posti teek saadab e-kirju minimaalse koodiga ning toetab SMTP, Sendmaili ja PHP e-posti transporti.
  • ⚙️ Keskne konfiguratsioon: Kohandatud konfiguratsioonifail email.php salvestab protokolli, hosti, pordi, kasutaja ja parooli, nii et seaded jäävad ühte kohta.
  • 🔓 SMTP-volitused: Nõutavad on kehtivad smtp_host, smtp_user ja smtp_pass väärtused; näivparameetrid ei edasta kunagi päris e-kirja.
  • 📝 Vorm vastutavale töötlejale: Kontaktivaade kogub saaja, teema ja sõnumi, mida kontroller sisendteegi abil loeb.
  • 📤 Saatmisvoog: Kontroller määrab saatja (from), saatja (to), teema (subject) ja sõnumi (message), seejärel kutsub välja saatja (send()) funktsiooni ja prindib vea korral siluriaruande.
  • 📎 HTML ja failid: Mailitüübi HTML-iks vahetamine ja attach() funktsiooni kutsumine võimaldab saata vormindatud sõnumeid koos failimanustega.
  • 🤖 Tehisintellekti abi: Tehisintellekti tööriistad saavad siluri väljundi põhjal genereerida e-posti kontrolleri, valideerida vormi sisendit ja diagnoosida SMTP-ühenduse vigu.

CodeSüütaja saadab e-kirja

Veebirakendustes on meil väga oluline roll. Kui kasutaja registreerub, võime saata talle meili, et kinnitada tema meiliaadress ja võimaldada kasutajal tellimus kinnitada. Samuti kasutame meili unustatud paroolide lähtestamiseks ning klientidele arvete ja kviitungite saatmiseks. CodeIgniter teeb meie rakendusest meilide saatmise ülilihtsaks, kasutades mitmesuguseid võimalusi.

CodeIgniteril on sisseehitatud e-posti teek, millega saame e-kirju saates töötada.

CodeSüütaja e-posti konfiguratsioon

Meil on vaja keskset kohta, kus saame hallata e-posti seadeid. CodeIgniteril ei ole meilide konfiguratsioonifaili kaasas, seega peame selle ise looma.

Looge kataloogis application/config fail email.php

Lisage aadressile email.php järgmine kood

<?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
);

SIIN,

  • 'protocol' => 'smtp', määrab protokolli, mida soovite e-kirjade saatmisel kasutada. See võib olla Gmail SMTP-seaded või teie hosti SMTP-seaded
  • 'smtp_host' => 'smtp.example.com' määrab SMTP hosti. Näiteks kui soovite kasutada Gmail siis oleks sul midagi sellist nagu smtp.gmail.com
  • 'smtp_port' => 465, avatud port määratud SMTP-hostil, mis on konfigureeritud SMTP-posti jaoks
  • 'smtp_user' => 'no-reply@example.com', e-posti aadress, mida kasutatakse e-kirjade saatmisel saatjana. See peaks olema kehtiv e-posti aadress, mis on serveris olemas
  • 'smtp_pass' => '12345!', määratud SMTP kasutaja e-posti aadressi parool
  • 'smtp_crypto' => 'ssl', määrab kasutatava krüpteerimismeetodi, nt ssl, tls jne.
  • 'mailtype' => 'text', määrab kasutatava kirja tüübi. See võib olla kas lihttekst või HTML, olenevalt teie vajadustest.
  • 'smtp_timeout' => '4', määrab aja sekundites, mis peaks kuluma hostiga ühenduse loomisel enne ajalõpu erandi tegemist.
  • 'charset' => 'iso-8859-1', määrab e-kirjade saatmisel kasutatava märgistiku.
  • 'wordwrap' => TRUE, kui see on seatud väärtusele TRUE, siis on sõnamurdmine lubatud. Kui see on seatud väärtusele FALSE, siis sõnamurdmine ei ole lubatud.

märkused: e-kirjade tööle saatmiseks peaksite esitama kehtivad konfiguratsiooniparameetrid. Dummy parameetrid ei saa e-kirju saata.

CodeSüütaja e-posti vaade

Selles jaotises loome vaate, mis saadab e-kirja adressaadile.

Looge rakenduses/vaadetes uus kataloogi e-kiri

Loo uus fail nimega contact.php kausta application/views/email.

Lisage järgmine kood saidile 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>

SIIN,

  • Meil on lihtne HTML-vorm, mis aktsepteerib e-posti aadressi, teema ja sõnumi ning edastab seejärel parameetrid e-posti marsruudile.

CodeIgniteri e-posti kontroller

Loome nüüd kontrolleri, mis hakkab e-kirjade saatmist haldama.

Looge rakenduses application/controllers/EmailController.php uus fail EmailController.php

Lisage saidile EmailController.php järgmine kood

<?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());
}
}
}

SIIN,

  • Klass EmailController laiendab CI_Controllerit {…} defineerib meie e-posti kontrolleri, mis laiendab ülemobjekti CodeSüütekontroller.
  • avalik funktsioon __construct() {…} määrab alamkonstruktori, mis kutsub esile emakonstruktori meetodi.
  • public function index() {…} määrab indeksi meetodi, mis kuvab kontaktivormi
  • funktsioon send() {…} määrab e-kirja saatmise meetodi
    • $this->load->config('email'); laadib meili konfiguratsiooniseaded
    • $this->load->library('email'); laadib meiliteegi
    • $from = $this->config-> item('smtp_user'); saab saatja ID meie määratletud meili konfiguratsioonifailist.
    • $to = $see->sisend->postitus('kulle'); saab esitatud vormilt väärtuse väärtuse
    • $subject = $this->input->post('subject'); määrab vormilt meili teema
    • $teade = $see->sisend->postitus('sõnum'); määrab vormilt meilisõnumi
    • $this->email->set_newline(“\r\n”); määrab e-kirjade uued reamärgid
    • $this->email->from($from); määrab saatja e-posti aadressi
    • $see->e-post->to($sataja); määrab saaja meiliaadressi
    • $see->e-post->teema($teema); määrab meili teema
    • $see->e-post->sõnum($teade); määrab meilisõnumi
    • kui ($this->email->send()) {…} üritab meili saata. Kui meili saatmine õnnestus, kuvatakse teade „Teie meil on edukalt saadetud”, vastasel juhul trükitakse veateate teave selle kohta, mis võis valesti minna.

Defineerime nüüd e-posti marsruudid.

E-posti marsruudid

Lisage saidile application/config/routes.php järgmised marsruudid

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

Nüüd saame kontaktvormi veebibrauserisse laadida.

Käivitame sisseehitatud PHP serveri.

Ava terminal või käsurida ja sirvi oma rakenduse juurkataloogi. Minu puhul asub juurkataloog draivil C:\Sites\ci-app.

cd C:\Sites\ci-app

Käivitage server järgmise käsuga

php -S localhost:3000

Laadige järgmine URL oma veebibrauseris: http://localhost:3000/send-email

Peaksite nägema järgmist vormi

E-posti marsruudid

Sisestage saaja e-posti aadress, teema ja e-posti sõnum ning seejärel klõpsake nuppu „Saada e-kiri”. Kui teie e-posti konfiguratsioon on õigesti seadistatud, peaksite nägema eduteadet.

Kuidas saata HTML-e-kirju ja manuseid Codeelektrisütik

Sama e-posti teek saab saata rikkalikult vormindatud sõnumeid ja faile. Kaks väikest muudatust muudavad ülaltoodud lihtteksti näite HTML-meiliks koos manusega.

$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'): annab teekile teada, et sisu sisaldab HTML-i, seega kuvatakse sildid, näiteks pealkirjad ja lingid, saaja postkastis.
  • manusta(): lisab sõnumile serveri teelt faili; kutsu seda iga faili jaoks enne send() funktsiooni üks kord välja.

Pea meeles, et HTML-vormingus meilid peaksid ikkagi sisaldama lihtteksti alternatiivi ja ranged meiliserverid võivad suured manused tagasi lükata.

KKK

Localhostil pole tavaliselt meiliserverit, seega meiliprotokoll ebaõnnestub vaikselt. Lülitage protokoll smtp-le ja sisestage päris SMTP-host, kasutaja ja parool või kasutage teenust, näiteks Maillõks kohalikuks testimiseks.

Määra smtp_host väärtuseks smtp.gmail.com, smtp_port väärtuseks 465 koos ssl-iga ja smtp_user väärtuseks oma Gmail aadress. Kasutage Google Rakenduse parool tavalise parooli asemel, kuna Gmail blokeerib lihtsad parooliga sisselogimised.

Meiliprotokoll kasutab PHP funktsiooni mail(), sendmail kutsub serveri kohalikku binaarfaili ja smtp loob ühenduse välise meiliserveriga volituste abil. SMTP on edastamise ja autentimise jaoks kõige usaldusväärsem.

Jah. Tehisintellekt saab luua kontrolleri, lisada vormi valideerimise saaja ja teema jaoks ning hõlmata edu- ja veakäsitlust. RevEnne SMTP tootmiskeskkonnas kasutamist vaadake üle SMTP sätted ja lisage kiirusepiirang.

Jah. Kleebi print_debugger() väljund ja tehisintellekt saab tõlgendada SMTP käepigistuse tõrkeid, autentimisvigu või pordi probleeme ning seejärel soovitada parandatud hosti, pordi või krüptimise väärtusi, mida proovida.

Võta see postitus kokku järgmiselt: