Сегодня пришло первое письмо в Helper:
Name: zeleboba Email: zelebb@gmail.com Сайт: http://www.knigoobzor.ru Ваша проблема: Проблема с сайтом knigoobzor.ru. Сейчас там дделываю возможность оставлять комменты к статьям. Хочу сделать возможность подписки и уведомления меня(админа) о том, что кто-то новый коммент оставил. Проблема состоит в том, что на хостинге сайта запрещено использование mail();. Можно ли реализовать отправку через smtp, например Яндекса? Намекни как. Или где почитать про это. Знаю, что есть плагины для wordpress, которые это делают, значит и для обычного сайта можно.
Данный класс предназначен для отправки почты с помощью php, если по каким-то причинам, от вас не зависящим, вы не можете использовать функцию mail(). Если же вы можете использовать mail() (возможность должа быть включена на сервере в конфигурации php), то можно лучше использовать её. Здесь же можно посмотреть на синтаксис команды mail: линк.
Мы будем использовать библиотеку PHPMailer (официальный сайт).
Закачав PHPMailer на сервер мы можем начинать работать. Создадим конфигурационный файл config.php:
<?php $__smtp = array( "host" => "smtp.yandex.ru", //smtp сервер "debug" => 2, //отображение информации дебаггера (0 - нет вообще) "auth" => true, //сервер требует авторизации "port" => 25, //порт (по-умолчанию - 25) "username" => "%username%",//имя пользователя на сервере "password" => "%password%",//пароль "addreply" => "your@email.com",//ваш е-mail "replyto" => "your@email.com" //e-mail ответа ); ?>
Теперь используем класс PHPMailer для отправки письма с авторизацией на SMTP сервере. Я создам отдельную функцию, которая будет отправлять письмо на определенный e-mail:
<?php function smtpmail($to, $subject, $content, $attach=false) { require_once('config.php'); //путь до конфигурационного файла для вашего smtp сервера require_once('class.phpmailer.php'); //путь до класса phpmailer $mail = new PHPMailer(true); $mail->IsSMTP(); try { $mail->Host = $__smtp['host']; $mail->SMTPDebug = $__smtp['debug']; $mail->SMTPAuth = $__smtp['auth']; $mail->Port = $__smtp['port']; $mail->Username = $__smtp['username']; $mail->Password = $__smtp['password']; $mail->AddReplyTo($__smtp['addreply'], $__smtp['username']); $mail->AddAddress($to); //кому письмо $mail->SetFrom($__smtp['addreply'], $__smtp['username']); //от кого (желательно указывать свой реальный e-mail на используемом SMTP сервере $mail->AddReplyTo($__smtp['addreply'], $__smtp['username']); $mail->Subject = htmlspecialchars($subject); $mail->MsgHTML($content); if($attach) $mail->AddAttachment($attach); $mail->Send(); echo "Message sent Ok!</p>\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); } catch (Exception $e) { echo $e->getMessage(); } } ?>
Думаю, что разбирать каждую функцию разбирать безсмысленно из-за понятности по названию. Хочется добавить, что в официально версии есть много примеров (работа с ssl, pop3 прежде smtp, работа с gmail и тд). Мы разобрали самый простой и самый распространенный вариант отправки писем через smtp средствами php.
Пример можно скачать здесь.