Электронная почта (E-Mail) в PHP
Функция mail()
Самый простой способ посылать почту из программы на PHP - функция mail().
Аргументы функции:
mail ( $to , $subject , $message [, $additional_headers [, $additional_parameters ]] )
Пример:
<?php
$to = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.' . "\r\n" .
'Reply-To: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Но использование этой функции не всегда удобно и надёжно. Часто удобнее использовать другие билиотеки или классы для работы с электронной почтой из PHP.
Есть целый ряд готовых популярных, проверенных решений, которые упрощают задачу работы с электронной почтой из PHP и дают программисту дополнительные возможности. Например: PHPMailer, SwiftMailer, Zend_Mail, eZcomponents и др..
PHPMailer
PHPMailer - полнофункциональный PHP - класс, который выполняет все необходимые задачи по подготовке и рассылке сообщений по электронной почте. В том числе и с использованием SMTP и кодирования сообщений.
Основные зарактеристики:
- самый популярный способ для отправки электронной почты в PHP
- используется многими проектами с открытым исходным кодом: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomlaи др.
- интегрированная поддержка SMTP - отправка без локального почтового сервера
- возможность отправлять электронные письма с несколькими TO, CC, BCC и REPLY-TO
- многостраничные / альтернативные электронные письма для почтовых клиентов, которые не читают HTML-адрес электронной почты
- поддержка разных кодировок: UTF-8, 8-битных, base64, двоичных и др
- аутентификация SMTP с помощью механизмов LOGIN, PLAIN, NTLM, CRAM-MD5 и Google XOAUTH2 через SSL и TLS-транспорт
- сообщения об ошибках на 47 языках (в том числе Русский, Иврит)
- поддержка подписей DKIM и S / MIME
- совместимость с PHP 5.0 и более поздними версиями
Многие разработчики PHP используют в своем коде электронную почту. Единственная функция PHP, которая поддерживает - функция mail (). Тем не менее, он не предоставляет никакой возможности для использования популярных функций, таких как электронные письма и вложения на основе HTML.
Правильно форматировать электронную почту достатчно сложно. Существует множество пересекающихся стандартов, протоколов RFC, требующих жесткой привязки к достаточно сложным правилам форматирования и кодирования. Подавляющее большинство программ, которые можно найти в Интернете, использущих PHP - функцию mail () напрямую, содержат большое количество ошибок, так как ата задача сложна. Также не имеет смысла делать то самостоятельно.
Функция PHP mail() обычно использует локальный почтовый сервер, как правило, с помощью бинарного файла sendmail на платформах Linux, BSD и OS X, однако Windows обычно не включает локальный почтовый сервер. Встроенная в PHPMailer SMTP-поддержка позволяет отправлять электронную почту на любых платформах ( в том числе: Windows) без локального почтового сервера.
Пример:
<?php
header('Content-Type: text/html; charset=utf-8');
require 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8'; // Кодировка сообщения
$mail->isSMTP(); // Использовать SMTP
$mail->Host = 'smtp.test.com'; // SMTP сервер
$mail->SMTPAuth = true; // Использовать SMTP регистрацию
$mail->Username = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.'; // SMTP пользователь
$mail->Password = 'password'; // SMTP пароль
$mail->SMTPSecure = 'ssl'; // Разрешить кодировку: ssl или tls
$mail->Port = 465; // TCP порт
$mail->setFrom(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.', 'Тестировщик почты');
$mail->addReplyTo(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.', 'Тестировщик почты');
$mail->addAddress(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.', 'User'); // Получатель
$mail->isHTML(true); // Посылать в формате HTML
$mail->Body = 'Текст сообщения';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>