Как отправить электронное письмо с помощью функции PHP mail()

Что такое почта PHP?

PHP-почта — это встроенная функция PHP, которая используется для отправки электронных писем с помощью PHP-скриптов.

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

  • Email
  • Тема
  • Сообщение
  • Адреса электронной почты CC или BC

  • Это экономичный способ уведомления пользователей о важных событиях.
  • Позвольте пользователям связываться с вами по электронной почте, предоставив форму обратной связи на веб-сайте, который отправляет предоставленный контент по электронной почте.
  • Разработчики могут использовать его для получения системных ошибок по электронной почте.
  • Вы можете использовать его для отправки электронных писем подписчикам новостной рассылки.
  • Вы можете использовать его для отправки ссылок для сброса пароля пользователям, которые забыли свои пароли.
  • Вы можете использовать его для отправки ссылок активации/подтверждения по электронной почте. Это полезно при регистрации пользователей и проверке их адресов электронной почты.

Почему/когда использовать почту PHP

Отправка почты с помощью PHP

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

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

ВОТ,

  • «$to_email_address» — адрес электронной почты получателя почты.
  • «$subject» — тема электронного письма.
  • «$message» — это сообщение, которое необходимо отправить.
  • «[$headers]» не является обязательным, его можно использовать для включения такой информации, как 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».

  • Откройте его с помощью блокнота или любого текстового редактора. В этом примере мы будем использовать блокнот. Нажмите на меню редактирования

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

  • Нажмите меню «Найти…».

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

  • Появится диалоговое меню поиска

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

  • Нажмите кнопку «Найти дальше».

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

  • Найдите записи

    • [функция почты]
    • ; ХАМПП: Не удаляйте столбец с запятой, если вы хотите работать с SMTP-сервером, например Mercury
    • ; SMTP = локальный хост
    • ; smtp_port = 25
    • Удалите точки с запятой перед SMTP и smtp_port и установите SMTP на свой smtp сервер и порт на ваш SMTP-порт. Ваши настройки должны выглядеть следующим образом

      • SMTP = smtp.example.com
      • смтп_порт = 25
      • Внимание настройки SMTP можно получить у вашего провайдера веб-хостинга.
      • Если сервер требует аутентификации, добавьте следующие строки.

        • auth_username = example_username@example.com
        • auth_password = пример_пароля
        • Сохраните новые изменения.
        • Restart Apache сервера.

PHP Mail Пример

Давайте теперь рассмотрим пример отправки простого письма.

<?php     
$to_email = 'name @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
$headers = 'From: noreply @ company . com';
mail($to_email,$subject,$message,$headers);
?>

Вывод:

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

Примечание: приведенный выше пример принимает только 4 обязательных параметра.

Вам следует заменить указанный выше вымышленный адрес электронной почты реальным адресом электронной почты.

Очистка вводимых пользователем адресов электронной почты

В приведенном выше примере для простоты используются жестко закодированные значения в исходном коде для адреса электронной почты и других сведений.

Предположим, вам нужно создать форму обратной связи, чтобы пользователи могли заполнить ее и отправить.

  • Пользователи могут случайно или намеренно вставить код в заголовки, что может привести к рассылке спама.
  • Чтобы защитить свою систему от таких атак, вы можете создать пользовательскую функцию, которая очищает и проверяет значения перед отправкой почты.

Давайте создадим пользовательскую функцию, которая проверяет и очищает адрес электронной почты с помощью встроенной функции filter_var.

Функция Filter_var Функция filter_var используется для очистки и проверки вводимых пользователем данных.

Он имеет следующий базовый синтаксис.

<?php
filter_var($field, SANITIZATION TYPE);
?>

ВОТ,

  • «filter_var(…)» — функция проверки и очистки.
  • «$field» — это значение поля, подлежащего фильтрации.
  • «ТИП ДЕЗАНИЗАЦИИ» — это тип санитарной обработки, которая будет проводиться на поле, например;

    • FILTER_VALIDATE_EMAIL – он возвращает true для действительных адресов электронной почты и false для недействительных адресов электронной почты.
    • FILTER_SANITIZE_EMAIL – он удаляет недопустимые символы из адресов электронной почты. info\@domain.(com) возвращает info@domain.com.
    • FILTER_SANITIZE_URL – он удаляет недопустимые символы из URL-адресов. http://www.example@.comé возвращает >http://www.example@.com
    • FILTER_SANITIZE_STRING – удаляет теги из строковых значений. я смелый становится смелым.

В приведенном ниже коде используется пользовательская функция для отправки защищенной почты.

<?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 @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail ';
$headers = 'From: noreply @ company. com';
//check if the email address is invalid $secure_check
$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

Электронные письма могут быть перехвачены во время передачи непреднамеренными получателями.

Это может привести к тому, что содержимое электронного письма станет доступным непредусмотренным получателям.

Безопасная почта решает эту проблему, передавая электронные письма через защищенный протокол передачи гипертекста (HTTPS).

HTTPS шифрует сообщения перед их отправкой.

Резюме

  • The PHP встроенная функция mail() используется для отправки почты из PHP-скриптов
  • Проверки проверки и очистки данных необходимы для отправки безопасной почты.
  • Встроенная функция PHP filter_var() обеспечивает простой в использовании и эффективный способ очистки и проверки данных.