Smtp сервер yandex php

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

Некоторое время назад, я заметил, что письма, отправляемые с моего сервера, перестали доходить до адресата. Редко, попадали в папку Спам, чаще совсем не доходили. Сразу было понятно, что проблема в функции mail();

Пути решения было два: Читать много мануалов и настраивать сервак так, чтобы функция mail() корректно отправляла всю корреспонденцию или отправлять письма через SMTP. Как вы понимаете, путь я выбрал второй.

$config [ ‘smtp_debug’ ] = true ; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false

$config [ ‘smtp_from’ ] = ‘МегаСервис’ ; //Ваше имя — или имя Вашего сайта. Будет показывать при прочтении в поле «От кого»

$SEND . = ‘Subject: =?’ . $config [ ‘smtp_charset’ ] . ‘?B?’ . base64_encode ( $subject ) . «=?=\r\n» ;

$SEND . = «From: \»=?» . $config [ ‘smtp_charset’ ] . «?B?» . base64_encode ( $config [ ‘smtp_from’ ] ) . «=?=\» <" . $config [ 'smtp_username' ] . ">\r\n» ;

if ( ! $socket = fsockopen ( $config [ ‘smtp_host’ ] , $config [ ‘smtp_port’ ] , $errno , $errstr , 30 ) )
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не могу отправить HELO!

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не могу найти ответ на запрос авторизаци.

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Логин авторизации не был принят сервером!

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Пароль не был принят сервером как верный! Ошибка авторизации!

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не могу отправить комманду MAIL FROM:

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не могу отправить комманду RCPT TO:

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не могу отправить комманду DATA

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo ‘

Не смог отправить тело письма. Письмо не было отправленно!

‘ ;
if ( $config [ ‘smtp_debug’ ] ) echo «

Проблемы с отправкой почты!

$response
$line
» ;
if ( $config [ ‘smtp_debug’ ] ) echo «

Проблемы с отправкой почты!

$response
$line
» ;

Использовать её можно так-же как и обычную функцию mail:

smtpmail ( ‘Имя получателя’ , ’email-получателя@mail.ru’ , ‘Тема письма’ , ‘HTML или обычный текст письма’ ) ;

Сколько писем можно отправлять с бесплатных (SMTP) почтовых ящиков?

  1. mail.ru — не более 1 письма в минуту
  2. yandex.ru — не более 150 писем в сутки, не более 25 адресатов в одном письме
  3. gmail.com, tut.by — не более 500 писем в сутки (хотя в справке гугла фигурирует 2000), не более 500 получателей в одном письме за раз при отправке через интерфейс gmail.com (через web-интерфейс, т.е. при входе через браузер), не более 100 получателей в одном письме за раз при отправке через ваш почтовый клиент
  4. rambler.ru — не более 200 писем в час
  5. ukr.net — не более 250 писем в сутки
  6. meta.ua — не более 200 писем в сутки
  7. aol.com — не более 500 писем в сутки
  8. lycos.com — не более 250 писем в сутки

Рекомендую отправлять количества писем на 20-30 % меньше лимита.

Gmail может заблокировать (первый раз на сутки) ваш аккаунт и при меньшем чем 500 числе адресатов в письме. Очень важно, чтобы адреса были живые, работающие. При нескольких десятках мертвых адресов в одном письме c gmail вероятность блокировки очень велика.

Источник

Отправка писем через 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 = 'Пароль';

Источник

Как подключится к SMTP Yandex?

Здравствуйте! У меня не получается отправлять почту через PHPMailer, вчера целый день убил на этот этот вопрос.
Возможно я упускаю какую-то мелочь. Буду благодарен за любую помощь.

  1. В своём аккаунте yandex создал и подтвердил домен mydomain.ru
  2. Прописал mx.yandex.ru в записях
  3. Cоздал почту noreply@mydomain.ru (чтобы отправлять сервисные сообщения регистрация, восстановление . )
  4. Отправляю через PHPMailer 6.1.5
  5. Думал не верно логин и пароль прописываю, перебрал все сочетания.
  6. Создал отдельный пароль для приложения, не помогло
  7. Пробовал разные настройки портов и ENCRYPTION_xxx

Пример кода взял из исходника

Как правильно настроить эти параметры?

//Server settings $mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output $mail->isSMTP(); // Send using SMTP $mail->Host = 'smtp.yandex.ru'; // Set the SMTP server to send through $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'логин аккаунта без @yandex.ru'; // SMTP username $mail->Password = 'пароль аккаунта'; // SMTP password $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged $mail->Port = 465; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

В зависимости от насторек получаю 2 типа ошибок

2020-05-25 15:29:38 SMTP ERROR: Failed to connect to server: (0) SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Message could not be sent. Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting или 2020-05-25 15:39:14 SERVER -> CLIENT: 2020-05-25 15:39:14 SMTP NOTICE: EOF caught while checking if connected SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host.

Простой 12 комментариев

Источник

Отправка почты через 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, и не попадет в спам.

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

Источник

Читайте также:  Img source in php
Оцените статью