Отправка писем через SMTP на PHP
0

Отправка писем через SMTP на PHP

Попросили меня недавно написать статейку про отправку писем через SMTP с помощью языка PHP, на своем сайте. Вот собственно и она. Данный урок будет содержать часть кода, небольшие пояснения и дополнительную информацию касательно удаленных почтовых сервисов аля Яндекс, Google, Mailru и другие, эта информация пригодится вам может в ходе написать ваших скриптов и модулей, где затрагивается отправка писем через SMTP.

 

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

 

Мы же будем использовать библиотеку PHPMailer: ссылка на официальный сайт.

И так поехали! Скачав архив и залив PHPMailer на сервер можно начинать работать с ним.

 

Для начала создадим наш файл с настройками (конфиг) config.php:

<?
$__smtp = array(
    "host" => "smtp.mail.ru", //smtp сервер
    "debug" => 2,                   //отображение информации дебаггера (0 - нет вообще)
    "auth" => true,                 //сервер требует авторизации
    "port" => 25,                    //порт (по-умолчанию - 25)
    "username" => "Username",//имя пользователя на сервере
    "password" => "myparol123",//пароль
    "addreply" => "site@mail.ru",//ваш е-mail
    "replyto" => "site@mail.ru"      //e-mail ответа
);
?>

 

После манипуляций с файлом config.php мы можем использовать класс PHPMailer для того, чтобы отправлять письма через SMTP сервер. Пользоваться мы будем SMTP с авторизацией, которая обычно используется на большинстве порядочных почтовых сервисах типа Яндекс, Гугл, МаилРу. 

Создадим отдельную функцию для отправки писем с нашего сайта, используя конфиг выше и PHPMailer:

<?
    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!
\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage();
} catch (Exception $e) {
  echo $e->getMessage();
}
}
?>

 

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

Запись опубликована В категории: Изучение PHP

Shnapik

Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *