ProfiPHPProfiPHP
Категория: Полезное в PHP

Класс для отправка почты в PHP

Если вы имеете небольшой проект, где существует необходимость отправлять текстовые почтовые сообщения пользователям, можно воспользоваться очень простым классом для отправки почты встроенными средствами PHP.

В большинстве случаев, данная реализация оправки почты полностью себя оправдает. Ее использования будет хорошим вариантом для функции восстановления пароля, где на почту приходит ссылка на восстановление, или для рассылки новостей или других целей.

Для начала необходимо создать конфигурационные константы:
define( "MAILSITENAME", "My site" );
define( "MAILCHARSET", "utf8" );
define( "MAILADMIN", "adminemail@gmail.com" );
В константе MAILSITENAME сохраняется название сайта, с которого будет происходить отправка сообщения.

Константа MAILCHARSET содержит кодировку.

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

Как известно, объект - это совокупность данных (свойств) и функций (методов) для их обработки. В свойствах данного класса будет содержатся одна переменная $send_error, которая отвечает за результат оправки. По умолчанию равна FALSE:
var $send_error = FALSE;
Далее будут следовать необходимые функции, и начнем с функции инициализации заголовков:
function compile_headers(  )
{
$this->subject = "=?" . MAILCHARSET . "?b?" . base64_encode( $this->subject ) . "?=";
$from = "=?" . MAILCHARSET . "?b?" . base64_encode( MAILSITENAME ) . "?=";
$this->mail_headers .= "MIME-Version: 1.0" . "\n";
$this->mail_headers .= "Content-type: text/plain; charset=\"" . MAILCHARSET . "\"" . "\n";
$this->mail_headers .= "Subject: " . $this->subject . "\n";
$this->mail_headers .= "To: " . $this->to . "\n";
$this->mail_headers .= "From: \"" . $from . "\" <" . MAILADMIN . ">" . "\n";
$this->mail_headers .= "Return-Path: <" . MAILADMIN . ">" . "\n";
$this->mail_headers .= "X-Priority: 3" . "\n";
$this->mail_headers .= "X-Mailer: PHP" . "\n";
}
Далее следует функция отправки сообщения:
function send( $to, $subject, $message )
{
$this->to = $to;
$this->subject = $subject;
$this->compile_headers( );
if ( $this->to && MAILADMIN && $this->subject ) {
if( ! @mail( $this->to, $this->subject, $message, $this->mail_headers ) ) {
$this->send_error = true;
}
}
}
Инициализация и отправка сообщения происходит следующим образом:
$mail = new send_mail;
$mail->send( 'useremail@gmail.com, 'Заголовок сообщения', 'Содержание сообщения' );
if ( $mail->send_error ) {
echo 'По техническим причинам не удалось отправить сообщение с восстановлением пароля. Попробуйте, пожалуйста, через некоторое время.';
}
else {
echo 'Уважаемый посетитель! На ваш E-Mail адрес было отправлено сообщение.';
}
Весь класс:
class send_mail
{
var $send_error = FALSE; // Вывод ошибки
// Создание заголовков:
function compile_headers( )
{
$this->subject = "=?" . MAILCHARSET . "?b?" . base64_encode( $this->subject ) . "?=";
$from = "=?" . MAILCHARSET . "?b?" . base64_encode( MAILSITENAME ) . "?=";
$this->mail_headers .= "MIME-Version: 1.0" . "\n";
$this->mail_headers .= "Content-type: text/plain; charset=\"" . MAILCHARSET . "\"" . "\n";
$this->mail_headers .= "Subject: " . $this->subject . "\n";
$this->mail_headers .= "To: " . $this->to . "\n";
$this->mail_headers .= "From: \"" . $from . "\" <" . MAILADMIN . ">" . "\n";
$this->mail_headers .= "Return-Path: <" . MAILADMIN . ">" . "\n";
$this->mail_headers .= "X-Priority: 3" . "\n";
$this->mail_headers .= "X-Mailer: PHP" . "\n";
}
// Функция оправки сообщения:
function send( $to, $subject, $message )
{
$this->to = $to;
$this->subject = $subject;
$this->compile_headers( );
if ( $this->to && MAILADMIN && $this->subject ) {
if( ! @mail( $this->to, $this->subject, $message, $this->mail_headers ) ) {
$this->send_error = true;
}
}
}
}

Добавить комментарий

Имя:
Текст комментария: