Как да изпратите имейл с помощта на функцията PHP mail().

⚡ Умно обобщение

PHP mail е вградената функция, която изпраща имейл директно от PHP скрипт, използвайки SMTP настройките на сървъра. Това ръководство обхваща синтаксиса и параметрите на mail(), конфигурирането на SMTP в php.ini, дезинфекцирането на потребителския вход с filter_var, изпращането на защитена поща и използването на PHP.Mailза надеждна доставка.

  • 📧 Какво прави mail(): Функцията mail() изпраща имейл от скрипт, като приема получателя, темата, съобщението и незадължителните заглавки.
  • 📨 SMTP транспорт: PHP пощата разчита на SMTP, чийто хост, порт и удостоверяване са зададени в конфигурационния файл php.ini.
  • 📋 Копие и Скрито копие: Незадължителните заглавки добавят получатели на копие и скрито копие, като BCC е скрито от останалите получатели.
  • Дезинфекциране на входа: filter_var с FILTER_SANITIZE_EMAIL и FILTER_VALIDATE_EMAIL блокира инжектирането на заглавки от входните данни на формуляра за контакт.
  • 🔒 Закрепете Mail: Криптирането на връзката с SSL или TLS защитава съдържанието на съобщението от четене по време на предаване.
  • 🧰 Използвайте PHPMailНЛП: PHPMailer добавя SMTP удостоверяване, прикачени файлове и HTML имейл, което го прави по-надежден от raw mail().
  • 🤖 AI Assist: Инструментите с изкуствен интелект могат да конфигурират PHPMailс SMTP и да предложите решения, които да предпазят имейлите ви от попадане в папката за спам.

PHP Mail

Какво е PHP поща?

PHP mail е вградената PHP функция, която се използва за изпращане на имейли от PHP скриптове.

Функцията за поща приема следните параметри:

  • E-mail
  • Тема:
  • Съобщение
  • Имейл адреси с CC или BCC

Защо и кога да използвате PHP поща

Функцията за поща е полезна в много ситуации:

  • Това е рентабилен начин за уведомяване на потребителите за важни събития.
  • Позволете на потребителите да се свързват с вас по имейл, като предоставят формуляр за връзка с нас на уебсайта, който изпраща предоставеното съдържание по имейл.
  • Разработчиците могат да го използват, за да получават системни грешки по имейл.
  • Можете да го използвате, за да изпратите имейл до вашите абонати за бюлетин.
  • Можете да го използвате, за да изпращате връзки за нулиране на парола на потребители, които са забравили паролите си.
  • Можете да го използвате, за да изпращате имейли с линкове за активиране и потвърждение. Това е полезно при регистриране на потребители и проверка на техните имейл адреси.

Изпращане на поща чрез PHP

Функцията за поща в PHP има следния основен синтаксис.

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

ТУК,

  • “$to_email_address” е имейл адресът на получателя на имейла
  • “$subject” е темата на имейла
  • “$message” е съобщението, което трябва да бъде изпратено.
  • „[$headers]“ е по избор; може да се използва за включване на информация като CC и BCC.
    • CC е акроним за „carbon copy“ (копие). Използва се, когато искате да изпратите копие на заинтересовано лице, т.е. имейл с жалба, изпратен до компания, може да бъде изпратен като CC и до борда за жалби.
    • BCC е акроним за скрито копие. Подобно е на CC, но имейл адресите, включени в секцията BCC, не се показват на останалите получатели.

Прост Mail Transmission Протокол (SMTP)

PHP пощата използва Simple Mail Transmission Протокол (SMTP) за изпращане на поща.

На хостван сървър, SMTP настройките вече биха били зададени.

Настройките за SMTP поща могат да бъдат конфигурирани от файла „php.ini“ в инсталационната папка на PHP.

За да конфигурирате SMTP настройките на вашия локален хост, ако използвате XAMPP на Windows, намерете файла „php.ini“ в директорията „C:\xampp\php“.

  • Отворете го с Notepad или друг текстов редактор. В този пример ще използваме Notepad. Кликнете върху менюто Edit.

Прост Mail Transmission протокол

  • Кликнете върху менюто „Намери…“

Прост Mail Transmission протокол

  • Ще се появи диалоговият прозорец „Търсене“

Прост Mail Transmission протокол

  • Кликнете върху бутона „Намери следващото“

Прост Mail Transmission протокол

Намерете записите под [function mail]. Редовете по подразбиране обикновено изглеждат така:

  • ; SMTP = локален хост
  • ; smtp_port = 25

Премахнете точката и запетаята преди SMTP и smtp_port и задайте SMTP на вашия SMTP сървър и порта към вашия SMTP порт. Настройките ви трябва да изглеждат по следния начин:

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

Забележка: SMTP настройките могат да бъдат получени от вашия доставчик на уеб хостинг. Ако сървърът изисква удостоверяване, добавете следните редове:

  • auth_username = example_username@example.com
  • auth_password = примерна_парола

Запазете новите промени и рестартирайте Apache сървър.

PHP Mail Пример

Нека сега разгледаме пример, който изпраща обикновен имейл.

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

Изход:

Прост Mail Transmission протокол

Забележка: горният пример приема само 4-те задължителни параметъра. Трябва да замените горния фиктивен имейл адрес с истински имейл адрес.

Дезинфекциране на въведените от потребителя имейли

Горният пример използва твърдо кодирани стойности в изходния код за имейл адреса и други подробности за простота.

Да предположим, че трябва да създадете формуляр за контакт, където потребителите попълват данните и след това ги изпращат.

  • Потребителите могат случайно или умишлено да инжектират код в заглавките, което може да доведе до изпращане на спам имейли.
  • За да защитите системата си от подобни атаки, можете да създадете персонализирана функция, която дезинфекцира и валидира стойностите преди изпращането на имейла.

Нека създадем персонализирана функция, която валидира и дезинфекцира имейл адреса, използвайки вградената функция filter_var. Функцията filter_var се използва за дезинфекция и валидиране на потребителските входни данни.

Той има следния основен синтаксис.

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

ТУК,

  • „filter_var(…)“ е функцията за валидиране и дезинфекция
  • “$field” е стойността на полето, което трябва да се филтрира.
  • „ТИП_НА_ДЕЗАГНУВАНЕ“ е видът дезинфекция, която ще се извърши на терена, като например:
    • FILTER_VALIDATE_EMAIL – връща true за валидни имейл адреси и false за невалидни имейл адреси.
    • FILTER_SANITIZE_EMAIL – премахва невалидни символи от имейл адреси, така че адрес с разпръснати символи се редуцира до info@domain.com.
    • ФИЛТЪР_ДЕЗАГНОСТИРАНЕ_URL – премахва невалидни символи от URLс, оставяйки чист адрес, като например https://www.example.com.
    • FILTER_SANITIZE_STRING – премахва тагове от низови стойности, така че am bold става am bold. Обърнете внимание, че този филтър е остарял в PHP 8.1; използвайте htmlspecialchars() вместо това.

Кодът по-долу използва персонализирана функция за изпращане на защитена поща.

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

Изход:

Дезинфекциране на въведените от потребителя имейли

Закрепете Mail

Имейлите могат да бъдат прихванати по време на предаване от нежелани получатели.

Това може да разкрие съдържанието на имейла на нежелани получатели.

Защитената поща решава този проблем чрез transmitизпращане на имейли през криптирана връзка, използваща SSL или TLS, например SMTP през SSL на порт 465 или STARTTLS на порт 587.

Криптирането разбърква съобщението преди изпращането му, така че само пощенският сървър на целевия получател може да го прочете.

PHPMailъъъ: По-добра алтернатива на mail()

За реални приложения, повечето разработчици използват PHPMailer библиотека вместо функцията mail(). PHPMailer се удостоверява с външен SMTP сървър, което значително подобрява доставяемостта и прави прикачените файлове и HTML имейлите лесни.

Инсталирайте го с Composer, след което изпращайте имейли чрез удостоверена, криптирана SMTP връзка, както е показано по-долу.

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

В сравнение с mail(), PHPMailer ви предоставя SMTP удостоверяване, вградено криптиране, поддръжка на прикачени файлове и по-ясна обработка на грешки, поради което е препоръчителният избор за производствена електронна поща.

Въпроси и Отговори

Най-честата причина е липсата на конфигуриран пощенски сървър на localhost. Задайте правилните SMTP стойности в php.ini или използвайте PHPMailс удостоверен SMTP акаунт. Проверете също дневника на грешките на сървъра и папката си за спам.

Добавете заглавки, които задават MIME-Version на 1.0 и Content-Type на text/html, след което поставете HTML маркиране в тялото на съобщението. PHPMailer обработва това автоматично, когато зададете опцията му isHTML(true).

FILTER_SANITIZE_STRING е остарял от PHP 8.1. Използвайте htmlspecialchars() за екраниране на изхода за показване или специфичен валидатор като FILTER_VALIDATE_EMAIL, в зависимост от това дали почиствате или проверявате стойността.

Да. Дайте на AI вашия SMTP хост, порт и тип сигурност и той може да генерира пълния PHP код.Mailнастройка с удостоверяване, подател, получатели и обработка на грешки. Съхранявайте идентификационните данни в променливи на средата, а не в код.

Да. Изкуственият интелект може да ви даде съвети относно SPF, DKIM и DMARC записи, като използва удостоверен SMTP подател, избягва ключови думи за спам и задава валиден адрес на „От“, след което да ви помогне да тествате доставяемостта.

Обобщете тази публикация с: