Php отправка email yandex

PHP ОТПРАВКА ПОЧТЫ ЧЕРЕЗ SMTP ЯНДЕКСА

Для отправки почты через SMTP Яндекса на языке PHP необходимо использовать библиотеку PHPMailer. Для начала нужно загрузить ее с помощью Composer:

composer require phpmailer/phpmailer

Далее, создается экземпляр класса PHPMailer и настраиваются параметры сервера SMTP:

$mail = new PHPMailer\PHPMailer\PHPMailer();$mail->isSMTP();$mail->Host = ‘smtp.yandex.ru’;$mail->Port = 465;$mail->SMTPSecure = ‘ssl’;$mail->SMTPAuth = true;$mail->Username = ‘username@yandex.ru’;$mail->Password = ‘password’;

Затем, настраиваются параметры письма, такие как отправитель, получатели, тема и текст:

$mail->setFrom(‘username@yandex.ru’, ‘Имя отправителя’);$mail->addAddress(‘recipient1@example.com’, ‘Имя получателя1’);$mail->addAddress(‘recipient2@example.com’, ‘Имя получателя2’);$mail->Subject = ‘Тема письма’;$mail->Body = ‘Текст письма’;

Наконец, вызывается метод send() для отправки письма:

Готовый код для отправки письма через SMTP Яндекса на PHP:

require ‘vendor/autoload.php’;$mail = new PHPMailer\PHPMailer\PHPMailer();// SMTP settings$mail->isSMTP();$mail->Host = ‘smtp.yandex.ru’;$mail->Port = 465;$mail->SMTPSecure = ‘ssl’;$mail->SMTPAuth = true;$mail->Username = ‘username@yandex.ru’;$mail->Password = ‘password’;// Email content$mail->setFrom(‘username@yandex.ru’, ‘Имя отправителя’);$mail->addAddress(‘recipient1@example.com’, ‘Имя получателя1’);$mail->addAddress(‘recipient2@example.com’, ‘Имя получателя2’);$mail->Subject = ‘Тема письма’;$mail->Body = ‘Текст письма’;// Send emailif(!$mail->send()) < echo 'Ошибка отправки письма: ' . $mail->ErrorInfo;> else

Как настроить SMTP на Яндекс почте

Как настроить E-mail уведомление через SMTP Yandex?

How To Send Email Using PHP With PHP Mailer — PHP Send Email — Full Step By Step

SMTP Gmail для отправки писем с сайта

Как работает электронная почта: SMTP, POP3 и IMAP

Почта в OpenServer. Настройка почты и отправка письма по SMTP в OpenServer.

Отправка писем на PHP. Функция mail

Источник

Отправка почты через SMTP с помощью PHP

Отправка почты через SMTP с помощью PHP на картинке

Здравствуйте дорогие читатели. В этой записи я расскажу Вам как отправить письмо с вашего сайта через SMTP сервер. Перед тем, как отправлять письма через SMTP необходимо обязательно настроить DMARC, DKIM, SPF. Если не настроить, ваши письма будут попадать в спам, но нам этого не нужно. Статья — Как настроить DMARC, SPF, DKIM подпись на своем сайте.

Готовый класс — PHP

Для начала загрузите готовый класс, по ссылке — SendMailSmtpClass.php.zip

Распаковываем архив, и размещаем в любую директорию на Вашем сайте.

Настройка класса

Настройка очень простая. Разместите этот код на странице, которая присутствует на каждой. Обычно это — страница конфига.

require_once "SendMailSmtpClass.php"; // подключаем класс //ДЛЯ YANDEX.RU $mailSMTP = new SendMailSmtpClass('mail@yandex.ru', 'pass', 'ssl://smtp.yandex.ru', 465, "UTF-8"); //ДЛЯ MAIL.RU $mailSMTP = new SendMailSmtpClass('mail@mail.ru', 'pass', 'ssl://smtp.mail.ru', 465, "UTF-8"); //РАСШИФРОВКА ЗНАЧЕНИЙ $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'порт', 'кодировка письма');

Код отправки самого письма:

$from = array("Блог программиста", // Имя отправителя "support@212d.ru" // почта отправителя ); $result = $mailSMTP->send('Кому письмо, можно через , два получателя', 'Тема письма', 'Текст письма', $from); 

$result возвращает либо true — успешная отправка, либо false — ошибка.

Прикрепление файлов к письму

$mailSMTP->addFile("file1.jpg"); $mailSMTP->addFile("file2.jpg");

В итоге, если Вы все настроили правильно Ваше письмо будет отправляется через этот SMTP сервер с подписей DKIM, и не попадет в спам.

Пишите свои вопросы, предложения в комментариях помогу Всем!

Источник

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

Отправлять письма через PHP намного проще, чем кажется. Всего-то надо сформировать правильный EML, подключиться к SMTP и отправить письмо. Ну ещё может быть, хотя и не факт, надо где-то как-то залогировать отправку, а то потом потеряют письмо, скажут, что и не было никаких писем. И виноватый опять ты, хотя ты бел и пушист. А ещё бы хорошо сделать хоть какую-то обработку ошибок, а то вдруг эксепшин, или серевер устал, или коннект не пошёл, а тут суперважный клиент. И уж совсем замечательно хранить где-то письма на случай «я потеряль», «мне не дошло», «а вышлите мне ещё раз». А ещё мы хотим отправлять письма на сайте, который видел расцвет динозавров. А ещё. мне кажется, что список ещё может расширяться не хуже нашей вселенной.

Для решения всех этих проблем я решил написать небольшой инструмент — ApMailer.

ApMailer

ApMailer — это небольшая библиотека, единственной целью которой является отправка почты. Я постарался сделать её максимально простой и удобной. Вы можете скачать всего один файл и отправлять письма и из консоли, и из web-скриптов!

Подключение ApMailer

Скачайте из репозитория файл mailer.phar или src/lib.php (если не нужна консольная версия). После этого подключите lib.php:

// Если скачали phar include 'phar:///path/to/mailer.phar/lib.php'; // Если скачали исходный код include '/path/to/lib.php';

После этого будет доступна функция Mailer() :

Mailer()->init(include 'config.php'); $message = Mailer()->newHtmlMessage(); $message->setSubject($messageSubject); $message->setSenderEmail($messageFrom); $message->addRecipient($messageTo); $message->addContent(file_get_contents('mail-header.html')); $message->addContent($messageText); $message->addContent(file_get_contents('mail-footer.html')); $message->addRelatedFile('signature.png'); if (isset($_FILES['attachment']['size']) && $_FILES['attachment']['size'] > 0) < $message->addAttachmentFile( $_FILES['attachment']['tmp_name'], $_FILES['attachment']['name'], $_FILES['attachment']['type'] ); > Mailer()->sendMessage($message);

Инициализация

Перед отправкой писем Mailer надо проинициализировать. Делается это так:

Конфиг представляет из себя многомерный массив, в котором указываются адрес отправителя по умолчанию, хуки для обработки ошибок и ведения логов и транспортёры:

$config = [ 'defaultFrom' => 'mymail@example.org', 'onError' => function($error, $message, $transport) < echo $error; >, 'afterSend' => function($text, $message, $layer) < echo $text; >, 'transports' => [ // Сохранение всех писем в папке ['file', 'dir' => __DIR__ .'/mails'], // Отправка писем через Yandex, используя SSL и авторизацию ['smtp', 'host' => 'smtp.yandex.ru', 'ssl' => true, 'port' => '465', 'login' => '****@yandex.ru', 'password' => '******'], ], ];

В качестве транспортов можно использовать file и smtp . Тип транспорёта всегда должен передаваться первым элементом массива, дальше идут его настройки.

Транспортёр file сохраняет письмо в виде EML в папку. Доступны следующие настройки:

  • dir — папка, а которую будут сохраняться письма. Если предполагается много писем, лучше хранить их с разбивкой по дате ‘dir’ => strftime( ‘/path/to/mails/%Y/%m/%d’ )

Транспортёр smtp отправляет письмо через SMTP. Доступны следующие настройки:

  • host — адрес SMTP-сервера
  • ssl — использовать SSL при подключении (обязательно для google, yandex и других популярных сервисов)
  • port — порт подключения (обычно 25 для подключения без SSL и 465 для подклюения с SSL)
  • login — логин для авторизации (если логин не указан, то используется подключение без авторизации)
  • password — пароль для авторизации (не используется, если логин не указан)
  • onError — срабатывает на ошибку транспортёра (удобно делать лог ошибок отправки писем)
  • afterSend — срабатывает после отправки письма (удобно делать общий лог отправки писем)

Настройка defaultFrom нужна, чтобы не указывать каждый раз адрес отправителя. Если система не подразумевает работу нескольких человек, которые могут отсылать почту, то этот адрес обычно постоянный.

Рабочий пример

В качестве примера я сделал форму отправки письма:

Форма отправки письма

Пример письма

Отправка почты на старых версиях PHP

Поскольку библиотека умеет работать через консоль, то можно формировать команду, которая сможет отправлять письма. Единственное, что нужно, наличие скомпилированного бинарника PHP 5.6.

function sendMail($message) < $keys = array( 'subject' => '-s', 'from' => '-f', 'text' => '-t', 'reciient' => array('-r'), 'to' => array('-r'), 'related' => array('-i'), 'attachment' => array('-a'), 'config' => array('-c'), ); $args = array(); // Если отправляют HTML if (isset($message['html'])) < $args[] = '--html'; // Подключаем шаблон $textArray = array(); // Header $textArray[] = ''; if (isset($message['html'])) < $textArray[] = join((array) $message['html']); > // Footer $textArray[] = ''; $message['text'] = join($textArray); > foreach ($keys as $key => $argument) < if (!isset($message[$key])) < continue; > if (is_array($argument)) < $argument = array_shift($argument); foreach ((array) $message[$key] as $value) < $args[] = $argument .' '. escapeshellarg($value); > > else < $args[] = $argument .' '. escapeshellarg($message[$key]); > > $command = 'php5.6 /path/to/mailer.phar '. join(' ', $args); exec($command); >;

А дальше уже можно отправлять письма:

sendMail(array( 'to' => array('someone@exmaple.org', 'someoneelse@exmaple.org'), 'subject' => 'Привет, мир!', 'html' => '

Hello

'
, ));

Источник

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

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

use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once '/PHPMailer/src/Exception.php'; require_once '/PHPMailer/src/PHPMailer.php'; require_once '/PHPMailer/src/SMTP.php'; // Для более ранних версий PHPMailer //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 = '

«Hello, world!»

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

Если при отправки писем возникает ошибка « Could not connect to SMTP host », то необходимо добавить следующие строки:

$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );

Яндекс Почта

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

В настройках почты нужно разрешить доступ к почтовому ящику с помощью почтовых клиентов:

Разрешить доступ к почтовому ящику с помощью почтовых клиентов в Яндекс почте

Mail.ru

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

Gmail

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

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

Отключить двухфакторную авторизацию Gmail

Разблокировать «ненадежные приложения» в настройках Gmail

Рамблер

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

iCloud

$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 = 'Пароль';

Timeweb

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

Хостинг Центр (hc.ru)

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

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

REG.RU

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

Имя сервера на reg.ru

Имя сервера на reg.ru

ДЖИНО

У jino.ru нужно включить опцию «SMTP-сервер»

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

nic.ru

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

Бегет — beget.com

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

Спринтхост — sprinthost.ru

$mail->Host = 'ssl://smtp.ВАШ_ДОМЕН'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';

Источник

Читайте также:  Открыть новую вкладку браузера javascript
Оцените статью