«
»
WEBWEB - PHP

Отправка электронной почты с использованием SMTP-серверов Gmail и Amazon SES через PHPMailer

Возможность отправки электронной почты является одной из наиболее желательных и (иногда) важных функций для любых современных веб-приложений. От отправки электронной почты для « проверки электронной почты » до отправки уведомлений, счетов-фактур или информационных бюллетеней, он имеет очень много применений.

В этой статье я расскажу, как отправлять электронную почту с помощью встроенной функции PHP, каковы ее ограничения и как использовать PHPMailer. Кроме того, я также покажу, как отправлять электронную почту, используя SMTP-серверы Gmail и Amazon SES через PHPMailer.

Отправка писем с помощью функции PHP mail()

Вы можете использовать функцию mail() для отправки электронной почты с помощью PHP. Следует следующий синтаксис:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Первые три параметра ($to, $subject и $message) являются обязательными, а остальные параметры являются необязательными.

Даже если вы можете использовать эту функцию для отправки электронного письма с самого веб-сервера, она имеет некоторые ограничения. Это не подходит для больших объемов электронной почты. Это менее гибко и требует наличие локального почтового сервера для отправки писем. Шансы на получение почты в папке со спамом высоки.

Кроме того, вам необходимо правильно составить сообщение перед отправкой. Ну и плюс не забывайте что, отправка электронных писем и вложений на основе HTML – это кошмар.

Начало работы с PHPMailer

PHPMailer – это библиотека классов для PHP, которая предоставляет набор функций для создания и отправки сообщений электронной почты. Это одна из лучших альтернатив функции mail().

Чтобы использовать эту библиотеку, загрузите ее отсюда . Скопируйте классы class.phpmailer.php и class.smtp.php в папку вашего проекта.

Вы можете отправить сообщение с помощью PHPMailer, используя следующие фрагменты.

require_once('path/to/library/class.phpmailer.php'); //PHPMailer Object $mail = new PHPMailer; $mail->SetFrom('from@domain','From Name'); $mail->Subject = 'Email Subject'; // Reciever email and name $mail->AddAddress('to@domain', 'Receiver Name'); // Additional Reciver (optional) $mail->addAddress("to@domain", "Receiver Name"); //Address to which recipient will reply $mail->addReplyTo("reply@yourdomain.com", "Reply"); //Add CC and BCC $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); //Send HTML or Plain Text email $mail->isHTML(true); $mail->Subject = "Email Subject Text"; $mail->Body = "Body of Email"; // Now Send the mail if($mail->Send()) { echo "Message sent!"; } else { echo "Mailer Error: " . $mail->ErrorInfo; }

Вы можете отправить вложение, добавив следующий код:

//Attachments $mail->addAttachment('/var/tmp/tutorial.pdf'); // Add attachments $mail->addAttachment('/tmp/tutorial.jpg', 'Tutorial'); // Optional name

SMTP с PHPMailer

Интегрированная реализация PHPMailer SMTP позволяет отправлять электронную почту на различные платформы без локального почтового сервера. Вы можете использовать почтовый сервер другого хоста для отправки электронной почты. Для использования SMTP необходимо добавить и обновить следующие фрагменты:

$mail->SMTPDebug = 2; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'user@example.com'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to

Чтобы отправлять электронную почту с помощью Gmail SMTP, измените узел на «smtp.gmail.com», порт «465». Используйте имя пользователя и пароль своей учетной записи Gmail для аутентификации. Вот функция:

define("SMTP_HOST", "smtp.gmail.com"); define("SMTP_PORT", 465); define("SMTP_UNAME", "your_mail@gmail.com"); define("SMTP_PWORD", 'your password'); function google_mail($to, $subject, $message) { require('path_to_library/class.phpmailer.php'); $mail = new PHPMailer; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPDebug = 1; $mail->SMTPSecure = "ssl"; $mail->Host = SMTP_HOST; $mail->Port = SMTP_PORT; $mail->Username = SMTP_UNAME; $mail->Password = SMTP_PWORD; $mail->SetFrom('From email','From Name'); $mail->Subject = $subject; $mail->AddAddress($to, $subject); $mail->MsgHTML($message); $mail->IsHTML(true); $send = $mail->Send(); return $send; }

Теперь, когда у вас есть код для отправки электронной почты с помощью Gmail SMTP, вы можете запустить его на своем сервере. Однако даже при правильных учетных данных вы все равно можете получить сообщение об ошибке «ОШИБКА: пароль не принят с сервера ». Серверы Google блокируют сервер, пытающийся пройти аутентификацию, в качестве меры безопасности.

Исправлена ​​ошибка, при которой пароль Gmail не принимался с сервера

Чтобы устранить эту проблему, убедитесь, что вы вошли в систему с использованием той же учетной записи Gmail в браузере, а затем просто перейдите по этой ссылке.
https://accounts.google.com/b/0/DisplayUnlockCaptcha

Это приведет вас на страницу, чтобы разрешить аутентификацию.

SMTP-аутентификация в Gmail

Нажмите кнопку « Продолжить» , чтобы включить доступ к учетной записи. Теперь попробуйте отправить письмо с вашего сервера. 

Точно так же вы можете отправить электронную почту, используя Amazon SES SMTP. Для этого используйте соответствующее значение для хоста , порта , имени пользователя и пароля .

Хост будет похож на «email-smtp.us-east-1.amazonaws.com» в зависимости от конфигурации вашей учетной записи Amazon SES.

Источник записи: https://thedebuggers.com

Связанные записи
WEBПолезные сайты

50 бесплатных сайтов для ваших проектов графического дизайна в 2020 году | Бесплатные Графика, Фото и Видео стоки, Шрифты, Макеты и не только

JoomlaWEBWordPressПлагиныПолезные сайты

Обзор уникального конструктора страниц Nicepage 2020 (WordPress, Joomla, HTML и не только)

CSSWEBПримеры

Мистический inline-flex и что он делает - Stas Bagretsov - Medium

WEBWordPressWordPress - CSSВсе для functions.phpВсе для разработки шаблоновПлагины

Пользовательские шрифты для сайта WordPress (пошагово)