|
|||
|
Отправка писем по SMTP через GmailДля отправки писем по SMTP из PHP можно использовать довольно популярный php-класс, размещенный на GitHub: Рекомендуемый способ его инсталляции - через Composer (должен быть загружен или установлен на сервере). Для тестирования скрипта нужно зайти по SSH в пустой, доступный из web каталог и выполнить: $ composer require phpmailer/phpmailer После выполнения команды в каталоге будет создана директория vendor, в которую будут загружены файлы класса PHPMailer и автозагрузчик Composer. Теперь в той же директории, из которой запускался Composer создается тестовый скрипт: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); // Passing `true` enables exceptions try { //Server settings $mail->setLanguage('ru', 'vendor/phpmailer/phpmailer/language/'); // Перевод на русский язык //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = 1; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->SMTPAuth = true; // Enable SMTP authentication //$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail //$mail->Port = 465; // TCP port to connect to $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers $mail->Username = 'USERNAME@gmail.com'; // SMTP username $mail->Password = 'PASSWORD'; // SMTP password //Recipients $mail->setFrom('USERNAME@gmail.com', 'USERNAME'); $mail->addAddress('SENDER@example.com'); // Name is optional //Content $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Test mail to user'; $mail->Body = 'This is the very simple HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } Еще один пример тестового скрипта: Если после запуска скрипта отображается такая ошибка: SMTP Error: Could not connect to SMTP host или SMTP ERROR: Failed to connect to server: Network is unreachable,
то следует проверить открыт ли SMTP порт в firewall и работоспособность DNS-сервера. Дополнительные сведения по ошибкам находятся на этой странице: Настройка аккаунта Google для отправки через SMTPЧтобы Google разрешил отправку писем через SMTP нужно произвести настройку учетной записи, иначе в логе PHPMailer может появится сообщение об ошибке: "SMTP ERROR: Password command failed: 534-5.7.14 Please log in via your web browser and then try again" (свойство $mail->SMTPDebug должно быть установлено в 1 или 2).
Следует учитывать, что Google разрешает отправлять через свои почтовые аккаунты Gmail не более 99 писем в сутки или до 2000 (500 - пробный аккаунт), с использованием платной версии почтового приложения G Suite. При превышении ограничения на отправку писем по SMTP пользователь теряет возможность отправлять новые письма на 24 часа, но доступ к своему аккаунту остается. Поскольку правила могут измениться в будущем, то посмотреть ограничения можно на Google будет автоматически изменять поле "От" любого сообщения, отправленного через SMTP на адрес электронной почты, записанный в настройках аккаунта. Чтобы изменить адрес "от" в настройках аккаунта нужно перейти на вкладку "Аккаунты и импорт" и нажать на "Добавить другой адрес электронной почты", после чего назначить его используемым по умолчанию. Опубликовано: 2017/11/30
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=717" target="_blank">Отправка писем по SMTP через Gmail из PHP</a> 17375
Добавить комментарий
|