Mail: примеры (PHP)
mail(string $to, string $subject, string $message, string|array $additional_headers = "", string $additional_params = ""): boolФункция mail() в PHP предназначена для отправки электронной почты. Она используется в ситуациях, когда необходимо отправить простое текстовое или HTML-сообщение без сложных вложений, например для автоматических уведомлений, форм обратной связи или восстановления пароля.
- to (string): Адрес получателя или список получателей.
- subject (string): Тема письма.
- message (string): Тело сообщения.
- additional_headers (string, опционально): Дополнительные заголовки (From, Cc, Bcc, Content-Type и др.).
- additional_params (string, опционально): Дополнительные параметры для программы отправки почты (sendmail).
<?php
$result = mail('user@example.com', 'Тема', 'Текст сообщения');
var_dump($result);
?>bool(true) // Если отправка прошла успешно
<?php
$to = 'user@example.com';
$subject = 'Приветствие';
$message = 'Здравствуйте!';
$headers = 'From: no-reply@mysite.com' . "\r\n" .
'Content-Type: text/plain; charset=utf-8';
$result = mail($to, $subject, $message, $headers);
?>// Письмо отправлено с указанным обратным адресом и кодировкой.
Библиотеки PHPMailer и Symfony Mailer предоставляют расширенный функционал: вложения, шаблоны, SMTP-отправку, SSL/TLS шифрование. Их предпочтительнее использовать для проектов, где требуется надежная и многофункциональная отправка почты.
Аналог mail(), но с автоматической обработкой многобайтовых кодировок. Используется при работе с нелатинскими символами.
import smtplib
from email.mime.text import MIMEText
msg = MIMEText('Текст письма', 'plain', 'utf-8')
msg['Subject'] = 'Тема'
msg['From'] = 'from@example.com'
msg['To'] = 'to@example.com'
with smtplib.SMTP('localhost') as server:
server.send_message(msg)const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({sendmail: true});
transporter.sendMail({
from: 'from@example.com',
to: 'to@example.com',
subject: 'Тема',
text: 'Текст письма'
});Mail в MySQL
В MySQL отсутствует встроенная функция для отправки электронной почты. Для этих целей обычно используются внешние SQL-запросы в сочетании с системными событиями или хранимые процедуры, которые взаимодействуют с внешними программами.
<?php
// Если sendmail не настроен
mail('user@example.com', 'Тема', 'Сообщение');
?>bool(false) // Функция возвращает false
<?php
$headers = 'From: некорректный-адрес';
mail('user@example.com', 'Тема', 'Сообщение', $headers);
?>// Письмо может не отправиться или быть помеченным как спам.
<?php
// Без указания кодировки в заголовках
$subject = 'Тема с кириллицей';
mail('user@example.com', $subject, 'Сообщение');
?>// Тема может отображаться некорректно у получателя.
В PHP 8.0 не было значительных изменений в функции mail(). Начиная с PHP 7.2, параметр additional_params стал опциональным. В более ранних версиях существовали незначительные исправления, связанные с безопасностью и обработкой строк.
<?php
$to = 'user@example.com';
$subject = 'HTML-письмо';
$message = '<html><body><h1>Заголовок</h1><p>Текст.</p></body></html>';
$headers = 'From: sender@example.com' . "\r\n" .
'Content-Type: text/html; charset=utf-8' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?><?php
$to = 'user1@example.com, user2@example.com';
$subject = 'Массовая рассылка';
$headers = 'Bcc: hidden@example.com';
mail($to, $subject, 'Сообщение', $headers);
?><?php
// Указание обратного адреса через параметры sendmail
$params = '-fno-reply@mysite.com';
mail('user@example.com', 'Тема', 'Сообщение', '', $params);
?><?php
if (!filter_var('user@example.com', FILTER_VALIDATE_EMAIL)) {
echo 'Неверный email';
} else {
mail('user@example.com', 'Тема', 'Сообщение');
}
?>