Kuidas saata e-kirju kasutades PHP mail() funktsiooni

โšก Nutikas kokkuvรตte

PHP mail on sisseehitatud funktsioon, mis saadab e-kirju otse PHP skriptist, kasutades serveri SMTP-seadeid. See juhend kรคsitleb mail() sรผntaksit ja parameetreid, SMTP seadistamist php.ini failis, kasutaja sisendi puhastamist filter_var abil, turvalise meili saatmist ja PHP kasutamist.Mailusaldusvรครคrse kohaletoimetamise eest.

  • ๐Ÿ“ง Mida mail() teeb: Funktsioon mail() saadab skriptist meili, vรตttes arvesse saaja, teema, sรตnumi ja valikulisi pรคiseid.
  • ๐Ÿ“จ SMTP-transport: PHP meilisรผsteem tugineb SMTP-le, mille host, port ja autentimine on mรครคratud php.ini konfiguratsioonifailis.
  • ???? Koopia ja salakoopia: Valikulised pรคised lisavad koopia ja pimekoopia saajad, kusjuures BCC on teiste saajate eest peidetud.
  • ๐Ÿ›ก๏ธ Sisendi puhastamine: filter_var koos FILTER_SANITIZE_EMAIL ja FILTER_VALIDATE_EMAIL parameetritega blokeerib pรคise sisestamise kontaktvormi sisendist.
  • ๐Ÿ”’ Kindlustage Mail: SSL-i vรตi TLS-iga รผhenduse krรผptimine kaitseb sรตnumi sisu edastamise ajal lugemise eest.
  • ๐Ÿงฐ Kasutage PHP-dMailer: PHPMailer lisab SMTP autentimise, manused ja HTML-e-kirjad, muutes selle usaldusvรครคrsemaks kui toormeil().
  • ๐Ÿค– Tehisintellekti abi: Tehisintellekti tรถรถriistad saavad PHP-d seadistadaMailSMTP-ga ja paku vรคlja lahendusi, mis hoiavad teie e-kirjad rรคmpsposti kaustast eemal.

PHP Mail

Mis on PHP-post?

PHP e-post on sisseehitatud PHP funktsioon, mida kasutatakse PHP skriptidest meilide saatmiseks.

Meilifunktsioon aktsepteerib jรคrgmisi parameetreid:

  • E-posti aadress
  • Teema
  • Jรคta sรตnum
  • Koopia vรตi salakoopia e-posti aadressid

Miks ja millal kasutada PHP meili

Postifunktsioon on kasulik paljudes olukordades:

  • See on kulutรตhus viis kasutajate teavitamiseks olulistest sรผndmustest.
  • Lubage kasutajatel teiega e-posti teel รผhendust vรตtta, esitades veebisaidil meiega kontaktivormi, mis saadab esitatud sisu meili teel.
  • Arendajad saavad seda kasutada sรผsteemivigade saamiseks e-posti teel.
  • Saate seda kasutada oma uudiskirja tellijatele e-kirjade saatmiseks.
  • Saate seda kasutada parooli lรคhtestamise linkide saatmiseks kasutajatele, kes on oma parooli unustanud.
  • Saate seda kasutada aktiveerimis- ja kinnituslinkide saatmiseks e-posti teel. See on kasulik kasutajate registreerimisel ja nende e-posti aadresside kinnitamisel.

Kirjade saatmine PHP-ga

PHP meilifunktsioonil on jรคrgmine pรตhisรผntaks.

<?php
mail($to_email_address,$subject,$message,[$headers],[$parameters]);
?>

SIIN,

  • "$to_email_address" on meili saaja e-posti aadress
  • "$subject" on meili teema
  • "$message" on sรตnum, mis tuleb saata.
  • โ€ž[$headers]โ€ on valikuline; seda saab kasutada sellise teabe lisamiseks nagu koopia ja pimekoopia.
    • CC on lรผhend sรตnadest carbon copy (koopia). Seda kasutatakse siis, kui soovite saata koopia huvitatud isikule, st ettevรตttele saadetud kaebuse e-kirja saab saata koopiana ka kaebuste komisjonile.
    • BCC on lรผhend sรตnadest blind carbon copy (peidetud koopia). See sarnaneb CC-ga, kuid BCC jaotises olevad e-posti aadressid ei ole teistele saajatele nรคhtavad.

lihtne Mail Transmission Protokoll (SMTP)

PHP meil kasutab lihtsat Mail Transmission Protokoll (SMTP) kirjade saatmiseks.

Hostitud serveris peaksid SMTP-seaded olema juba mรครคratud.

SMTP-posti seadeid saab konfigureerida PHP installikaustas olevas failis โ€žphp.iniโ€.

SMTP-sรคtete konfigureerimiseks oma localhostis, eeldades, et kasutate XAMPP-i Windows, leidke fail โ€žphp.iniโ€ kataloogist โ€žC:\xampp\phpโ€.

  • Ava see Notepadi vรตi mรตne muu tekstiredaktori abil. Selles nรคites kasutame Notepadi. โ€‹โ€‹Klรตpsa menรผรผl Redigeeri.

lihtne Mail Transmission Protokoll

  • Klรตpsake menรผรผd โ€žLeiaโ€ฆโ€œ

lihtne Mail Transmission Protokoll

  • Ilmub otsingudialoog

lihtne Mail Transmission Protokoll

  • Klรตpsake nupul Leia jรคrgmine

lihtne Mail Transmission Protokoll

Leidke kirjed alt [mail function]. Vaikimisi nรคevad read tavaliselt vรคlja sellised:

  • ; SMTP = kohalik host
  • ; smtp_port = 25

Eemaldage semikoolonid enne SMTP ja smtp_port ning mรครคrake SMTP oma SMTP server ja port oma SMTP-pordile. Teie seaded peaksid vรคlja nรคgema jรคrgmised:

  • SMTP = smtp.example.com
  • smtp_port = 25

Mรคrkus: SMTP-seaded saab oma veebimajutusteenuse pakkujalt. Kui server nรตuab autentimist, lisage jรคrgmised read:

  • auth_username = nรคide_kasutajanimi@example.com
  • auth_password = nรคide_parool

Salvestage uued muudatused ja taaskรคivitage Apache server.

PHP Mail Nรคide

Vaatame nรผรผd nรคidet, mis saadab lihtsa kirja.

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

Vรคljund:

lihtne Mail Transmission Protokoll

Mรคrkus: รผlaltoodud nรคites on kasutatud ainult nelja kohustuslikku parameetrit. Peaksite รผlaltoodud fiktiivse e-posti aadressi asendama tegeliku e-posti aadressiga.

E-posti kasutajate sisestuste desinfitseerimine

รœlaltoodud nรคites kasutatakse e-posti aadressi lรคhtekoodis kodeeritud vรครคrtusi ja muid รผksikasju lihtsuse huvides.

Oletame, et peate looma meiega รผhenduse vรตtmise vormi, kus kasutajad tรคidavad andmed ja seejรคrel esitavad.

  • Kasutajad saavad kogemata vรตi tahtlikult pรคistesse koodi sisestada, mis vรตib viia rรคmpsposti saatmiseni.
  • Sรผsteemi kaitsmiseks selliste rรผnnakute eest saate luua kohandatud funktsiooni, mis puhastab ja kinnitab vรครคrtused enne kirja saatmist.

Loome kohandatud funktsiooni, mis valideerib ja puhastab e-posti aadressi sisseehitatud funktsiooni filter_var abil. Funktsiooni filter_var kasutatakse kasutaja sisestatud andmete puhastamiseks ja valideerimiseks.

Sellel on jรคrgmine pรตhisรผntaks.

<?php
filter_var($field, SANITIZATION_TYPE);
?>

SIIN,

  • โ€žfilter_var(โ€ฆ)โ€ on valideerimis- ja desinfitseerimisfunktsioon
  • "$field" on filtreeritava vรคlja vรครคrtus.
  • โ€žSANITIZATION_TYPEโ€ on vรคljakul tehtava desinfitseerimise tรผรผp, nรคiteks:
    • FILTER_VALIDATE_EMAIL โ€“ tagastab kehtivate e-posti aadresside korral vรครคrtuse โ€žtrueโ€œ ja kehtetute e-posti aadresside korral vรครคrtuse โ€žfalseโ€œ.
    • FILTER_SANITIZE_EMAIL โ€“ eemaldab e-posti aadressidest lubamatud tรคhemรคrgid, nii et juhuslike tรคhemรคrkidega aadress taandatakse kujule info@domain.com.
    • FILTER_SANITIZE_URL โ€“ eemaldab keelatud tรคhemรคrgid URLs, jรคttes puhta aadressi, nรคiteks https://www.example.com.
    • FILTER_SANITIZE_STRING โ€“ eemaldab stringvรครคrtustelt sildid, seega โ€žam boldโ€ muutub โ€žam boldiksโ€. Pange tรคhele, et see filter on PHP 8.1-s aegunud; kasutage selle asemel htmlspecialchars().

Allolev kood kasutab turvalise meili saatmiseks kohandatud funktsiooni.

<?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";
}
?>

Vรคljund:

E-posti kasutajate sisestuste desinfitseerimine

Kindlustage Mail

Soovimatud saajad vรตivad e-kirju edastamise ajal pealt kuulata.

See vรตib e-kirja sisu soovimatutele adressaatidele paljastada.

Turvaline e-post lahendab selle probleemi transmite-kirjade saatmine krรผptitud รผhenduse kaudu SSL-i vรตi TLS-i abil, nรคiteks SMTP SSL-i kaudu pordil 465 vรตi STARTTLS pordil 587.

Krรผptimine segab sรตnumi enne saatmist, nii et ainult adressaadi meiliserver saab seda lugeda.

PHPMailer: Parem alternatiiv mail()-ile

Pรคris rakenduste jaoks kasutab enamik arendajaid PHP-dMailer teeki toore mail() funktsiooni asemel. PHPMailautentib vรคlise SMTP-serveriga, mis parandab oluliselt edastatavust ning muudab manuste ja HTML-e-kirjade saatmise lihtsaks.

Paigalda see Composeriga ja saada seejรคrel e-kiri autentitud ja krรผptitud SMTP-รผhenduse kaudu, nagu allpool nรคidatud.

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

Vรตrreldes mail()-ga, PHPMailer pakub sulle SMTP autentimist, sisseehitatud krรผptimist, manuste tuge ja selgemat veakรคsitlust, mistรตttu on see soovitatav valik tootmismeilide jaoks.

KKK

Kรตige levinum pรตhjus on see, et localhost'is pole meiliserverit konfigureeritud. Mรครคrake php.ini-s รตiged SMTP-vรครคrtused vรตi kasutage PHP-d.Mailautentitud SMTP-kontoga. Kontrollige ka serveri vealogi ja rรคmpsposti kausta.

Lisa pรคised, mis mรครคravad MIME-versiooni vรครคrtuseks 1.0 ja sisutรผรผbi vรครคrtuseks text/html ning seejรคrel lisa HTML-mรคrgistus sรตnumi sisusse. PHPMailer tegeleb sellega automaatselt, kui mรครคrate selle isHTML(true) valiku.

FILTER_SANITIZE_STRING on alates PHP 8.1-st aegunud. Kasutage vรคljundi kuvamiseks varjestamiseks htmlspecialchars() vรตi konkreetset validaatorit, nรคiteks FILTER_VALIDATE_EMAIL, olenevalt sellest, kas vรครคrtust puhastate vรตi kontrollite.

Jah. Andke tehisintellektile oma SMTP-host, port ja turvatรผรผp ning see saab genereerida tรคieliku PHP.Mailseadistamine autentimise, saatja, saajate ja veakรคsitlusega. Salvesta volitused keskkonnamuutujatesse, mitte koodi.

Jah. Tehisintellekt saab nรตustada SPF-, DKIM- ja DMARC-kirjete osas, kasutades autentitud SMTP-saatjat, vรคltides rรคmpsposti kรคivitavaid sรตnu ja mรครคrates kehtiva saatja aadressi, ning seejรคrel aidata teil kohaletoimetamist testida.

Vรตta see postitus kokku jรคrgmiselt: