Sähköpostin lähettäminen PHP mail() -funktiolla
⚡ Älykäs yhteenveto
PHP:n mail on sisäänrakennettu funktio, joka lähettää sähköpostia suoraan PHP-skriptistä käyttäen palvelimen SMTP-asetuksia. Tämä ohje käsittelee mail()-syntaksia ja -parametreja, SMTP:n konfigurointia php.ini-tiedostossa, käyttäjän syötteen puhdistamista filter_var-muuttujalla, suojatun sähköpostin lähettämistä ja PHP:n käyttöä.Mailluotettavan toimituksen takaamiseksi.

Mikä on PHP-posti?
PHP-sähköposti on sisäänrakennettu PHP-funktio, jota käytetään sähköpostien lähettämiseen PHP-skripteistä.
Postitoiminto hyväksyy seuraavat parametrit:
- Sähköpostiosoite
- Aihe
- Viesti
- Kopio- tai piilokopiosähköpostiosoitteet
Miksi ja milloin käyttää PHP-sähköpostia
Sähköpostitoiminto on hyödyllinen monissa tilanteissa:
- Se on kustannustehokas tapa ilmoittaa käyttäjille tärkeistä tapahtumista.
- Anna käyttäjien ottaa sinuun yhteyttä sähköpostitse antamalla yhteydenottolomake verkkosivustolla, joka lähettää tarjotun sisällön sähköpostitse.
- Kehittäjät voivat käyttää sitä vastaanottaakseen järjestelmävirheitä sähköpostitse.
- Voit käyttää sitä sähköpostin lähettämiseen uutiskirjeen tilaajille.
- Voit käyttää sitä salasanan palautuslinkkien lähettämiseen käyttäjille, jotka ovat unohtaneet salasanansa.
- Voit käyttää sitä aktivointi- ja vahvistuslinkkien lähettämiseen sähköpostitse. Tästä on hyötyä käyttäjiä rekisteröitäessä ja heidän sähköpostiosoitteitaan vahvistettaessa.
Sähköpostin lähettäminen PHP:llä
PHP:n sähköpostifunktiolla on seuraava perussyntaksi.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
TÄSSÄ,
- "$to_email_address" on sähköpostin vastaanottajan sähköpostiosoite
- "$subject" on sähköpostin aihe
- "$viesti" on lähetettävä viesti.
- ”[$headers]” on valinnainen; sitä voidaan käyttää tietojen, kuten kopio- ja piilokopio-osoitusten, sisällyttämiseen.
- CC on lyhenne sanoista carbon copy. Sitä käytetään, kun haluat lähettää kopion asiasta kiinnostuneelle henkilölle, eli yritykselle lähetetty valitussähköposti voidaan lähettää myös valituslautakunnalle kopiona.
- BCC on lyhenne sanoista blind carbon copy (piilokopio). Se on samankaltainen kuin CC, mutta BCC-osioon sisältyviä sähköpostiosoitteita ei näytetä muille vastaanottajille.
Yksinkertainen Mail Transmission Protokolla (SMTP)
PHP-sähköposti käyttää yksinkertaista Mail Transmission Protokolla (SMTP) sähköpostin lähettämiseen.
Isännöidyllä palvelimella SMTP-asetukset olisivat jo valmiiksi määritettyjä.
SMTP-postin asetukset voidaan määrittää PHP:n asennuskansiossa olevasta "php.ini"-tiedostosta.
SMTP-asetusten määrittäminen paikallisessa koneessa, olettaen että käytät XAMPP:ia Windows, etsi tiedosto ”php.ini” hakemistosta ”C:\xampp\php”.
- Avaa se Muistiolla tai millä tahansa tekstieditorilla. Käytämme tässä esimerkissä Muistiota. Napsauta Muokkaa-valikkoa.
- Napsauta Etsi… -valikkoa
- Etsi-valintaikkuna tulee näkyviin
- Napsauta Etsi seuraava -painiketta
Etsi merkinnät kohdasta [mail function]. Oletusarvoiset rivit näyttävät yleensä tältä:
- ; SMTP = paikallinen isäntä
- ; smtp_port = 25
Poista puolipisteet SMTP:n ja smtp_portin edestä ja aseta SMTP:lle oma porttisi. SMTP-palvelimen ja SMTP-porttisi portti. Asetusten pitäisi näyttää tältä:
- SMTP = smtp.example.com
- smtp_port = 25
Huomautus: SMTP-asetukset saat webhotellipalveluntarjoajaltasi. Jos palvelin vaatii todennusta, lisää seuraavat rivit:
- auth_username = esimerkki_käyttäjänimi@example.com
- auth_password = esimerkki_salasana
Tallenna uudet muutokset ja käynnistä uudelleen Apache palvelin.
PHP Mail esimerkki
Katsotaanpa nyt esimerkkiä, jossa lähetetään yksinkertainen sähköposti.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
lähtö:
Huomautus: yllä oleva esimerkki käyttää vain neljää pakollista parametria. Sinun tulee korvata yllä oleva kuvitteellinen sähköpostiosoite oikealla sähköpostiosoitteella.
Sähköpostin käyttäjien syötteiden desinfiointi
Yllä oleva esimerkki käyttää kovakoodattuja arvoja lähdekoodissa sähköpostiosoitteelle ja muille yksityiskohdille yksinkertaisuuden vuoksi.
Oletetaan, että sinun on luotava yhteydenottolomake, johon käyttäjät täyttävät tiedot ja lähettävät ne.
- Käyttäjät voivat vahingossa tai tahallaan lisätä koodia otsikoihin, mikä voi johtaa roskapostin lähettämiseen.
- Voit suojata järjestelmääsi tällaisilta hyökkäyksiltä luomalla mukautetun toiminnon, joka puhdistaa ja vahvistaa arvot ennen sähköpostin lähettämistä.
Luodaan mukautettu funktio, joka validoi ja puhdistaa sähköpostiosoitteen sisäänrakennetun filter_var-funktion avulla. filter_var-funktiota käytetään käyttäjän syöttämien tietojen validointiin ja puhdistamiseen.
Siinä on seuraava perussyntaksi.
<?php filter_var($field, SANITIZATION_TYPE); ?>
TÄSSÄ,
- "filter_var(…)" on vahvistus- ja puhdistustoiminto
- "$field" on suodatettavan kentän arvo.
- ”SANITIZATION_TYPE” on kentällä suoritettavan desinfioinnin tyyppi, kuten:
- FILTER_VALIDATE_EMAIL – palauttaa arvon true kelvollisille sähköpostiosoitteille ja false virheellisille sähköpostiosoitteille.
- FILTER_SANITIZE_EMAIL – poistaa sähköpostiosoitteista laittomat merkit, joten satunnaisia merkkejä sisältävä osoite supistuu muotoon info@domain.com.
- SUODATIN_DESINFIOINTI_URL – poistaa laittomat merkit URLs, jättäen siistin osoitteen, kuten https://www.example.com.
- FILTER_SANITIZE_STRING – poistaa tagit merkkijonoarvoista, joten am bold muuttuu am boldiksi. Huomaa, että tämä suodatin on vanhentunut PHP 8.1:ssä; käytä sen sijaan htmlspecialchars()-funktiota.
Alla oleva koodi käyttää mukautettua funktiota suojatun sähköpostin lähettämiseen.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
lähtö:
Varmista Mail
Ei-toivotut vastaanottajat voivat siepata sähköpostit lähetyksen aikana.
Tämä voi altistaa sähköpostin sisällön ei-toivotuille vastaanottajille.
Suojattu sähköposti ratkaisee tämän ongelman transmitsähköpostien lähettäminen salatun yhteyden kautta SSL- tai TLS-salauksen avulla, esimerkiksi SMTP SSL:n kautta portissa 465 tai STARTTLS portissa 587.
Salaus sekoittaa viestin ennen sen lähettämistä, jotta vain vastaanottajan sähköpostipalvelin voi lukea sen.
PHPMailer: Parempi vaihtoehto mail()-funktiolle
Todellisissa sovelluksissa useimmat kehittäjät käyttävät PHP:täMailer-kirjasto raa'an mail()-funktion sijaan. PHPMailer todentaa viestit ulkoisella SMTP-palvelimella, mikä parantaa huomattavasti toimitettavuutta ja tekee liitteiden ja HTML-sähköpostien lähettämisestä yksinkertaista.
Asenna se Composerilla ja lähetä sitten sähköpostia todennetun, salatun SMTP-yhteyden kautta alla olevan kuvan mukaisesti.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Verrattuna mail()-funktioon, PHPMailer tarjoaa SMTP-todennuksen, sisäänrakennetun salauksen, liitetiedostojen tuen ja selkeämmän virheenkäsittelyn, minkä vuoksi sitä suositellaan tuotantosähköpostiin.






