Для отправки писем через SMTP в PHP будем использовать библиотеку PHPMailer. Для этого ее необходимо скачать:
github.com/PHPMailer/PHPMailer или скачать с кодер.укр.
Распаковать архив в папку с расширениями (дополнениями).
Или установить с помощью composer:
composer require phpmailer/phpmailer
И приступаем к использованию.
Минимальный код для отправки писем с помощью SMTP
Использование библиотеки довольно простое, для примера отправим письмо с яндекс почты через SMTP:
<?php require 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.yandex.ru'; $mail->SMTPAuth = true; $mail->Username = 'robot@devreadwrite.com'; //Логин $mail->Password = '*******'; //Пароль $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom('robot@devreadwrite.com', 'Robot'); $mail->isHTML(true); $mail->Subject = 'Тема письма'; $mail->Body = '<b>HTML</b> версия письма'; $mail->AltBody = 'Текстовая версия письма, без HTML тегов (для клиентов не поддерживающих HTML)'; //Отправка сообщения if(!$mail->send()) { echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo; } else { echo 'Сообщение успешно отправлено'; }
Этого минимального кода хватит для 90% задач по отправке писем.
Подробный пример отправки писем через SMTP
<?php require 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; //Дебаг //0 = off (for production use) //1 = клиентские сообщения //2 = серверные и клиентские сообщения //$mail->SMTPDebug = 2; $mail->isSMTP(); $mail->Host = 'smtp.yandex.ru'; //gmail: smtp.gmail.com $mail->SMTPAuth = true; $mail->Username = 'robot@devreadwrite.com'; $mail->Password = '*******'; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setLanguage('ru'); $mail->setFrom('robot@devreadwrite.com', 'Robot'); $mail->addAddress('my.friend@gmail.com', 'My Friend'); //Получатель //$mail->addAddress('my.friend2@gmail.com'); //Еще получатель //$mail->addReplyTo('my.friend3@gmail.com', 'My Friend 3'); //$mail->addCC('my.friend.cc@example.com'); //Копия //$mail->addBCC('my.friend.bcc@example.com'); //Скрытая копия //$mail->addAttachment('/path/to/file.zip'); //Прикрепить файл //$mail->addAttachment('/path/to/image.jpg', 'new.jpg'); //Прикрепить файл + задать имя $mail->isHTML(true); $mail->Subject = 'Тема письма'; $mail->Body = '<b>HTML</b> версия письма'; $mail->AltBody = 'Текстовая версия письма, без HTML тегов (для клиентов не поддерживающих HTML)'; //Отправка сообщения if(!$mail->send()) { echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo; } else { echo 'Сообщение успешно отправлено'; }
Дополнительная документация: https://github.com/PHPMailer/PHPMailer/wiki.
Приятного использования.
Комментарии
Добавляю в избранное, теперь не придется искать по старым проектам.
ОтветитьВот только файлы на гитхабе другие ...
ОтветитьПроект развивается, поэтому и файлы могут быть теперь другими, возможно уже пора обновлять статью
Ответитьвсе работает, только у кирилицы кодировка ломается. получается чтото вроде пâпâ£Ð¿â¨Ñâ
Ответитьпробовал конвертировать сообщение в другую кодировку - лишь другие загогулины приходят.
PHPMailer
поменяй на UTF-8 и все исправишь Ответитьclass.phpmailer.php
48 строка там
Очередной нерабочий код, весь интернет таким захламили
ОтветитьЕсли нет композера:
Ответитьcd /tmp && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer