PHP

PHPMailer – отправка почты через SMTP

В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не доходят до адресатов. Альтернатива это отправка e-mail через SMTP с реального почтового ящика с использованием расширения PHPMailer.

Проект можно скачать на GitHub.com или архив PHPMailer.rar.

1

Пример отправки письма с вложением

require_once '/PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';

// Настройки SMTP
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 0;

$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "Логин";
$mail->Password = "Пароль";

// От кого
$mail->setFrom('mail@snipp.ru', 'Snipp.ru');        

// Кому
$mail->addAddress('mail@site.com', '');

// Тема письма
$mail->Subject = $subject;

// Тело письма
$body = '<p><strong>«Hello, world!» </strong></p>';
$mail->msgHTML($body);

// Приложение
$mail->addAttachment (__DIR__ . '/image.jpg');

$mail->send();
2

Настройки SMTP у почтовых сервисов и хостингов

$mail->Host = "ssl://smtp.yandex.ru";
$mail->Port = 465;
$mail->Username = "Логин@yandex.ru";
$mail->Password = "Пароль";

$mail->Host = "ssl://smtp.mail.ru";
$mail->Port = 465;
$mail->Username = "Логин@mail.ru";
$mail->Password = "Пароль";

$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "Логин@gmail.com";
$mail->Password = "Пароль";

Если возникает ошибка при отправки почты, то нужно отключить двухфакторную авторизацию и разблокировать "ненадежные приложения" в настройках конфиденциальности аккаунта https://myaccount.google.com/security?pli=1

$mail->Host = "ssl://smtp.rambler.ru";
$mail->Port = 465;
$mail->Username = "Логин@rambler.ru";
$mail->Password = "Пароль";

$mail->Host = "ssl://smtp.mail.me.com";
$mail->Port = 587;
$mail->Username = "Логин@icloud.com";
$mail->Password = "Пароль";

$mail->Host = "ssl://smtp.masterhost.ru";
$mail->Port = 465;
$mail->Username = "Логин@домен.ru";
$mail->Password = "Пароль";

Лимит - 2000 писем в день, но не более 5 в секунду.

$mail->Host = "ssl://smtp.timeweb.ru";
$mail->Port = 465;
$mail->Username = "Логин@домен.ru";
$mail->Password = "Пароль";

Доступ к сторонним почтовым серверам по SMTP-портам (25, 465, 587) ограничен, разрешена отправка не более 300 сообщений в сутки.

$mail->Host = "smtp.домен.ru";
$mail->SMTPSecure = 'TLS';
$mail->Port = 25;
$mail->Username = "Логин@домен.ru";
$mail->Password = "Пароль";

Лимит - 3000 писем в день 

$mail->Host = "ssl://serverXXX.hosting.reg.ru";
$mail->Port = 465;
$mail->Username = "Логин@домен.ru";
$mail->Password = "Пароль";

Имя сервера можно узнать в разделе "Информация о включенных сервисах и паролях доступа":

04 апреля 2018