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.

  • 📧 Mitä mail() tekee: Funktio mail() lähettää sähköpostin skriptistä ja ottaa huomioon vastaanottajan, aiheen, viestin ja valinnaiset otsikot.
  • 📨 SMTP-siirto: PHP-sähköposti käyttää SMTP:tä, jonka isäntä, portti ja todennus asetetaan php.ini-määritystiedostossa.
  • 📋 Kopio ja Piilokopio: Valinnaiset otsikot lisäävät kopion ja piilokopion vastaanottajat, ja piilokopio on piilotettu muilta vastaanottajilta.
  • 🛡️ Syöttöjärjestelmän puhdistus: filter_var yhdessä FILTER_SANITIZE_EMAIL:n ja FILTER_VALIDATE_EMAIL:n kanssa estää otsikkotietojen lisäämisen yhteydenottolomakkeen syötteistä.
  • 🔒 Varmista Mail: Yhteyden salaaminen SSL- tai TLS-salauksella suojaa viestin sisältöä lukemiselta siirron aikana.
  • 🧰 Käytä PHP:täMailer: PHPMailer lisää SMTP-todennuksen, liitteet ja HTML-sähköpostin, mikä tekee siitä luotettavamman kuin raw mail().
  • 🤖 AI Assist: Tekoälytyökalut voivat määrittää PHP:nMailSMTP:n kanssa ja ehdottaa korjauksia, jotka pitävät sähköpostisi poissa roskapostikansiosta.

PHP Mail

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.

Yksinkertainen Mail Transmission Protokolla

  • Napsauta Etsi… -valikkoa

Yksinkertainen Mail Transmission Protokolla

  • Etsi-valintaikkuna tulee näkyviin

Yksinkertainen Mail Transmission Protokolla

  • Napsauta Etsi seuraava -painiketta

Yksinkertainen Mail Transmission Protokolla

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ö:

Yksinkertainen Mail Transmission Protokolla

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ö:

Sähköpostin käyttäjien syötteiden desinfiointi

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.

UKK

Yleisin syy on, että paikallisella koneella ei ole määritettyä sähköpostipalvelinta. Aseta oikeat SMTP-arvot php.ini-tiedostoon tai käytä PHP:tä.Mailtodennetulla SMTP-tilillä. Tarkista myös palvelimen virheloki ja roskapostikansio.

Lisää otsikot, jotka asettavat MIME-version arvoksi 1.0 ja sisällön tyypin arvoksi text/html, ja lisää sitten HTML-merkinnät viestin runkoon. PHPMailer käsittelee tämän automaattisesti, kun asetat sen isHTML(true)-asetuksen.

FILTER_SANITIZE_STRING on vanhentunut PHP 8.1:stä lähtien. Käytä htmlspecialchars()-funktiota näyttääksesi tulosteen koodinvaihtona tai tiettyä validointityökalua, kuten FILTER_VALIDATE_EMAIL, riippuen siitä, puhdistatko vai tarkistatko arvoa.

Kyllä. Anna tekoälylle SMTP-isäntäsi, porttisi ja suojaustyyppisi, niin se voi luoda täyden PHP:n.Mailer-asetukset todennuksen, lähettäjän, vastaanottajien ja virheiden käsittelyn avulla. Tallenna tunnistetiedot ympäristömuuttujiin, älä koodiin.

Kyllä. Tekoäly voi neuvoa SPF-, DKIM- ja DMARC-tietueissa, käyttää todennettua SMTP-lähettäjää, välttää roskapostia laukaisevia sanoja ja asettaa kelvollisen lähettäjäosoitteen, ja auttaa sitten testaamaan toimitettavuutta.

Tiivistä tämä viesti seuraavasti: