Sähköpostin lähettäminen käyttämällä Codesytytin

⚡ Älykäs yhteenveto

CodeIgniter Sending Email käyttää kehyksen sisäänrakennettua sähköpostikirjastoa viestien toimittamiseen SMTP:n tai paikallisen sähköpostipalvelimen kautta. Tämä esimerkki luo sähköpostimääritystiedoston, yhteydenottolomakenäkymän ja ohjaimen, joka lukee lomakkeen syötteen ja lähettää viestin.

  • 📧 Sisäänrakennettu kirjasto: Sähköpostikirjasto lähettää sähköpostia minimaalisella koodilla ja tukee SMTP-, Sendmail- ja PHP-sähköpostinsiirtoja.
  • ⚙️ Keskuskonfiguraatio: Mukautettu email.php-määritystiedosto tallentaa protokollan, isännän, portin, käyttäjän ja salasanan, jotta asetukset pysyvät yhdessä paikassa.
  • 🔓 SMTP-tunnistetiedot: Kelvolliset smtp_host-, smtp_user- ja smtp_pass-arvot vaaditaan; valeparametrit eivät koskaan toimita oikeaa sähköpostia.
  • 📝 Lomake rekisterinpitäjälle: Yhteystietonäkymä kerää vastaanottajan, aiheen ja viestin tiedot, jotka ohjain lukee syötekirjaston avulla.
  • 📤 Lähetä työnkulku: Ohjain asettaa lähettäjän, vastaanottajan, aiheen ja viestin, kutsuu sitten send()-funktiota ja tulostaa virheenkorjausraportin.
  • 📎 HTML ja tiedostot: Vaihtamalla sähköpostityypin html:ksi ja kutsumalla attach()-funktiota voit lähettää muotoiltuja viestejä liitetiedostoineen.
  • 🤖 AI Assist: Tekoälytyökalut voivat luoda sähköpostin ohjaimen, validoida lomakkeen syötteen ja diagnosoida SMTP-yhteysvirheitä debuggerin tulosteen perusteella.

CodeSytytin lähettää sähköpostia

Sähköposti on erittäin tärkeä verkkosovelluksissa. Kun käyttäjä rekisteröityy, saatamme haluta lähettää hänelle sähköpostia vahvistaaksemme hänen sähköpostiosoitteensa ja antaaksemme käyttäjälle mahdollisuuden vahvistaa tilauksen. Käytämme sähköpostia myös unohtuneiden salasanojen palauttamiseen ja laskujen ja kuittien lähettämiseen asiakkaille. CodeIgniterin avulla sähköpostien lähettäminen sovelluksestamme on meille erittäin helppoa useilla eri tavoilla.

CodeIgniterissä on sisäänrakennettu sähköpostikirjasto, jota voimme käyttää sähköpostien lähettämisessä.

CodeSytyttimen sähköpostin määritys

Meidän on löydettävä keskitetty paikka, josta voimme hallita sähköpostiasetuksia. CodeIgniterissä ei ole sähköpostien määritystiedostoa, joten meidän on luotava sellainen itse.

Luo tiedosto email.php hakemistoon application/config

Lisää seuraava koodi osoitteeseen 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
);

TÄSSÄ,

  • 'protocol' => 'smtp', määrittää sähköpostin lähettämiseen käytettävän protokollan. Tämä voi olla Gmail SMTP-asetukset tai isäntälaitteesi SMTP-asetukset
  • 'smtp_host' => 'smtp.example.com' määrittää SMTP-isännän. Jos esimerkiksi haluat käyttää Gmail niin sinulla olisi jotain tyyliin smtp.gmail.com
  • 'smtp_port' => 465, SMTP-postia varten määritetty avoin portti määritetyllä SMTP-isännällä
  • 'smtp_user' => 'no-reply@example.com', sähköpostiosoite, jota käytetään lähettäjänä sähköposteja lähetettäessä. Tämän pitäisi olla kelvollinen sähköpostiosoite, joka on olemassa palvelimella
  • 'smtp_pass' => '12345!', määritetyn SMTP-käyttäjän sähköpostiosoitteen salasana
  • 'smtp_crypto' => 'ssl', määrittää käytettävän salausmenetelmän, esim. ssl, tls jne.
  • 'mailtype' => 'text', määrittää käytettävän sähköpostityypin. Tämä voi olla joko pelkkää tekstiä tai HTML-muotoa tarpeidesi mukaan.
  • 'smtp_timeout' => '4', määrittää ajan sekunteina, jonka pitäisi kulua yritettäessä muodostaa yhteys isäntään ennen kuin aikakatkaisupoikkeus heitetään.
  • 'charset' => 'iso-8859-1', määrittää sähköpostien lähettämisessä käytettävän merkistön.
  • 'wordwrap' => TRUE, jos arvo on TOSI, sananrivitys on käytössä. Jos arvo on EPÄTOSI, sananrivitys ei ole käytössä.

Huomautuksia: sähköpostien lähettämistä varten sinun tulee antaa kelvolliset määritysparametrit. Valeparametrit eivät voi lähettää sähköposteja.

CodeSytyttimen sähköpostinäkymä

Tässä osiossa luomme näkymän, joka lähettää sähköpostin vastaanottajalle.

Luo uusi hakemistosähköposti sovelluksessa/näkymissä

Luo uusi tiedosto contact.php kansioon application/views/email.

Lisää seuraava koodi osoitteeseen 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>

TÄSSÄ,

  • Meillä on yksinkertainen HTML-lomake, joka hyväksyy sähköpostin, aiheen ja viestin ja välittää sitten parametrit sähköpostireitille.

CodeIgniter-sähköpostin ohjain

Luodaan nyt ohjain, joka käsittelee sähköpostin lähettämisen.

Luo uusi tiedosto EmailController.php hakemistoon application/controllers/EmailController.php

Lisää seuraava koodi osoitteeseen 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());
}
}
}

TÄSSÄ,

  • luokka EmailController extends CI_Controller {…} määrittelee sähköpostiohjaimemme, joka laajentaa pääobjektia CodeSytyttimen ohjain.
  • julkinen funktio __construct() {…} määrittää alikonstruktorin, joka kutsuu ylätason konstruktorimetodia.
  • public function index() {…} määrittää indeksimenetelmän, joka näyttää yhteydenottolomakkeen
  • funktio send() {…} määrittää menetelmän, jolla sähköposti lähetetään
    • $this->load->config('sähköposti'); lataa sähköpostin määritysasetukset
    • $this->load->library('sähköposti'); lataa sähköpostikirjaston
    • $from = $this->config->item('smtp_user'); saa lähettäjän tunnuksen määrittämästämme sähköpostin määritystiedostosta.
    • $to = $this->input->post('to'); saa arvon lähetetystä lomakkeesta
    • $aihe = $this->input->post('aihe'); asettaa sähköpostin aiheen lomakkeen perusteella
    • $viesti = $this->input->post('viesti'); asettaa sähköpostiviestin lomakkeesta
    • $this->email->set_newline("\r\n"); määrittää sähköpostien uudet rivimerkit
    • $this->mail->from($from); asettaa lähettäjän sähköpostiosoitteen
    • $tämä->sähköposti->vastaanottaja($vastaanottaja); asettaa vastaanottajan sähköpostiosoitteen
    • $this->sähköposti->aihe($aihe); asettaa sähköpostin aiheen
    • $this->sähköposti->viesti($viesti); asettaa sähköpostiviestin
    • jos ($this->email->send()) {…} yrittää lähettää sähköpostia. Jos sähköpostin lähetys onnistuu, näytetään viesti ”Sähköpostiviestisi on lähetetty onnistuneesti”, muuten tulostetaan virheenkorjaustiedot siitä, mikä on saattanut mennä pieleen.

Määritellään nyt sähköpostireitit.

Sähköpostireitit

Lisää seuraavat reitit tiedostoon application/config/routes.php

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

Voimme nyt ladata yhteydenottolomakkeen verkkoselaimeen.

Käynnistämme sisäänrakennetun PHP-palvelimen.

Avaa pääte tai komentorivi ja selaa sovelluksesi juurihakemistoon. Minun tapauksessani juurihakemisto sijaitsee asemassa C:\Sites\ci-app.

cd C:\Sites\ci-app

Käynnistä palvelin seuraavalla komennolla

php -S localhost:3000

Lataa seuraavat URL verkkoselaimessasi: http://localhost:3000/send-email

Sinun pitäisi pystyä näkemään seuraava lomake

Sähköpostireitit

Kirjoita vastaanottajan sähköpostiosoite, aihe ja sähköpostiviesti ja napsauta sitten Lähetä sähköpostia. Jos sähköpostimäärityksesi on määritetty oikein, sinun pitäisi nähdä onnistumisviesti.

HTML-sähköpostien ja liitteiden lähettäminen Codesytytin

Sama sähköpostikirjasto voi lähettää monipuolisesti muotoiltuja viestejä ja tiedostoja. Kaksi pientä muutosta muuttaa yllä olevan pelkkää tekstiä sisältävän esimerkin HTML-sähköpostiksi liitteineen.

$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'): kertoo kirjastolle, että leipäteksti sisältää HTML-koodia, joten tagit, kuten otsikot ja linkit, näkyvät vastaanottajan postilaatikossa.
  • liittää(): lisää viestiin tiedoston palvelimen polusta; kutsu sitä kerran jokaiselle tiedostolle ennen send()-funktiota.

Muista, että HTML-sähköposteissa tulisi silti olla pelkkää tekstiä sisältävä vaihtoehto, ja tiukat sähköpostipalvelimet saattavat hylätä suuret liitteet.

UKK

Localhostilla ei yleensä ole sähköpostipalvelinta, joten sähköpostiprotokolla epäonnistuu hiljaa. Vaihda protokolla smtp:hen ja anna oikea SMTP-isäntä, käyttäjä ja salasana tai käytä palvelua, kuten Mailansa paikallista testausta varten.

Aseta smtp_host-arvoksi smtp.gmail.com, smtp_port-arvoksi 465 ssl-yhteydellä ja smtp_user-arvoksi omasi. Gmail osoite. Käytä Google Sovellussalasana normaalin salasanasi sijaan, koska Gmail estää perussalasanoilla kirjautumisen.

Sähköpostiprotokolla käyttää PHP:n mail()-funktiota, sendmail kutsuu palvelimen paikallista binääritiedostoa ja smtp muodostaa yhteyden ulkoiseen sähköpostipalvelimeen tunnistetiedoilla. SMTP on luotettavin toimituksen ja todennuksen kannalta.

Kyllä. Tekoäly voi rakentaa ohjaimen, lisätä lomakkeen validoinnin vastaanottajalle ja aiheelle sekä sisällyttää onnistumisen ja virheiden käsittelyn. RevTarkista SMTP-asetukset ja lisää nopeusrajoitus ennen sen käyttöä tuotannossa.

Kyllä. Liitä print_debugger():n tuloste, niin tekoäly voi tulkita SMTP-kättelyvirheet, todennusvirheet tai porttiongelmat ja sitten suositella korjattuja isäntä-, portti- tai salausarvoja kokeiltavaksi.

Tiivistä tämä viesti seuraavasti: