Перейти к публикации

Настройка почты по smtp yandex


Рекомендованные сообщения

6 часов назад, Sinatra сказал:

Какие должны быть настройки чтобы почта заработала по smtp.yandex.ru
Все перепробовал, не работает.

Плохо пробовали )

23b8b435c782.jpg

Ссылка на сообщение
Поделиться на других сайтах

именно так и прописывал, пробовал разные ящики на яндексе, не срабатывает, dle версия 14.0
срабатывает только PHP Mail

Ссылка на сообщение
Поделиться на других сайтах
14 минут назад, Sinatra сказал:

именно так и прописывал, пробовал разные ящики на яндексе, не срабатывает, dle версия 14.0
срабатывает только PHP Mail

Значит у вас не установлен или не настроен smtp на сервере.

Ссылка на сообщение
Поделиться на других сайтах

Вместо SSL используйте TLS.Ну и естественно у вас должна быть зарегина почта на яндексе.

А вообще,почта в DLE работает отлично и с PHP Mail.Подозреваю что у вас сервер на вашем компьютере...

Изменено пользователем Spywear
Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Sinatra сказал:

Чистая почта зарегана на яндексе, хостинг на 1gb.ru, подозреваю что-то на хосте надо сделать

Приведенные мной настройки 100% рабочие и испытаны на множестве сайтов именно с Яндекс Почтой.

Возможно, вы используете ящик вида name@yandex.ru, в таком случае имя пользователя надо указывать name, без @yandex.ru

 

Напишите хостеру, чтобы проверили доступность ssl://smtp.yandex.ru по 465 порту. Некоторые хостеры бывают блокируют соединение, почему то.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...
31.10.2020 в 17:58, webair сказал:

Приведенные мной настройки 100% рабочие и испытаны на множестве сайтов именно с Яндекс Почтой.

Возможно, вы используете ящик вида name@yandex.ru, в таком случае имя пользователя надо указывать name, без @yandex.ru

 

Напишите хостеру, чтобы проверили доступность ssl://smtp.yandex.ru по 465 порту. Некоторые хостеры бывают блокируют соединение, почему то.


Отвечу на вопрос из прошлого,
Неа не будут работать ваши настройки, как и другие советы.  Видимо у Яндекса для старых аккаунтов есть возможность по старому (тут не знаю точно), но для новых аккаунтов надо авторизоваться через XOAUTH2.

Например чтобы отправлять почту через приложения типа   Microsoft Outlook, Mozilla Thundebird, The Bat!, Opera Mail  недостаточно будет указать логин/пароль и сервер smtp.yandex.ru  необходимо создать еще пароль для внешнего приложения внутри яндекса:

Это в настройках почты яндекс на сайте:  Почта > Все настройки > Безопасность  -  Пароли приложений  (там создаются доступы для приложений)
Но перечисленные выше приложения могут автоматически пройти XOAUTH2 и получить токен для работы (это происходит при первом запуске - открывается страница яндекса с предложением авторизоваться обычным логимном/паролем), а веб-приложение не может пройти, поэтому это надо пройти это самому, для этого надо авторизоваться в почтовом ящике и перейти по URL

https://oauth.yandex.com/
И жмем на кнопку "Create New Client". Получим страницу c формой https://prnt.sc/22t6x7t

Вводим данные (это для себя)  название, url to app site - ссылка на главную сраницу сайта
Раздел Platforms выбираем Web services и там появится строка для ввода URL Callback URI #1: - указываем там также ссылку на главную страницу сайта

Далее раздел Permissions* указываем права скрипту, т.к. интересует только отправка почты то отмечаем 

Yandex.Mail for domains
Reading a list of domains and inboxes, connected domains, creating and removing inboxes in Yandex.Mail for domain

- получение отправка почты с сайта

Жмем на кнопку Create App 

И получаем данные:

ID: d78f345345b0c6453515bbb453546be342
Password: d6b324263b34cdd54654c75c645676
Callback URL: http://site.ru
TTL of token: At least 1 year
Date created: 13.12.2021

Теперь нужно получить от яндекса “refresh token” для авторизации oauth2 для этого переходим по URL  

https://oauth.yandex.com/authorize?response_type=code&client_id=xxxxxxxxx

- где xxxxxxxx - заменить на ID который получили ранее

произойдет редирект (яндекс попросит авторизоваться в аккаунте почты) и перекинет на сайт (на url который указали в поле URL Callback URI #1) 
http://site.ru/?code=7019726
- где code=7019726  это код необходимый далее

Теперь нужно отправить POST запрос на яндекс, можно попробовать онлайн-сервисы отправки запроса (типа https://reqbin.com/post-online) или создать свой скрипт или использовать дополнение для браузера, например RestMan (для Opera)
https://prnt.sc/22t7bcz

На URL https://oauth.yandex.com/token отправляем запрос с параметрами:
grant_type = 'authorization_code'  (эта строка без изменения, означает что мы запрашиваем код)
code = '7019726'   (это код из предыдущего шага который был отправлен на URL Callback)
client_id = 'd78f345345b0c6453515bbb453546be342'   (это ID созданного приложения)
client_secret = 'd6b324263b34cdd54654c75c645676'  (это пароль созданного приложения)

описание тут: https://yandex.ru/dev/oauth/doc/dg/reference/console-client.html 

в ответ получим данные JSON
{
    "access_token": "AQAAAAHshwPHvCIJHteHer83_GYunGNDE",
    "expires_in": 31536000,
    "refresh_token": "1:DFEDBtj3FHDTRet:HbJGTEIDVH4lCcr_R3IymDGTCDuImsXCggWSJ2:ekYf4_VT4YFDTRUEmqA",
    "token_type": "bearer"
}
 где будет нужный refresh_token

 

все данные получили теперь их нужно применить в PHPmailer, PHPmailer нужен не ниже 6й версии, в нем есть поддержка OAuth2, пример берем этот:

https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail_xoauth.phps

и переделываем под наши нужды (это тестовый скрипт, чтобы проверить работает отправка или нет):

<?php
// Import the PHPMailer Library
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\OAuth;

// Import the Yandex provider for the OAuth-Client library
use Aego\OAuth2\Client\Provider\Yandex;

// Load composer's autoloader
require 'vendor/autoload.php';

// Create PHPMailer object
$mail = new PHPMailer();

// Use smtp
$mail->isSMTP();

// Enable smtp debugging
$mail->SMTPDebug = SMTP::DEBUG_SERVER;

// Set smtp host
$mail->Host = 'smtp.yandex.com';

// Set smtp port
$mail->Port = 465;

// Set smtp encryption to smtps
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

// Enable smtp authentication
$mail->SMTPAuth = true;

// Set the authentication method to XOATH2
$mail->AuthType = 'XOAUTH2';

// Set this to your domain's email
$email = 'admin@site.ru';

// Set this to your client id (from the client information)

//ID приложения
$clientId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// Set this to your client password (from the client information)
//Пароль приложения

$clientSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// Set this to your refresh token (the one you just copied)
$refreshToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$provider = new Yandex(
    [
        'clientId' => $clientId,
        'clientSecret' => $clientSecret,
    ]
);

$mail->setOAuth(
    new OAuth(
        [
            'provider' => $provider,
            'clientId' => $clientId,
            'clientSecret' => $clientSecret,
            'refreshToken' => $refreshToken,
            'userName' => $email,
        ]
    )
);

// Set the email's from name
$mail->setFrom($email, 'CodeIgniter 4 - JNote');

// Set the email's recipients
$mail->addAddress('someuser@yandex.com', 'SomeUserName');

// Set the email's charset
$mail->CharSet = PHPMailer::CHARSET_UTF8;

// Set the email subject and body
$mail->Subject = 'Test';
$mail->msgHTML('This Is A Test');

// Send the email!
if ($mail->send()) {
    echo "Success!";
} else {
   echo $mail->ErrorInfo;
}


Прикол в том, что в движке DLE по-умолчанию старая версия PHPmailer-a, там нет модуля OAuth поэтому его придется обновлять руками, а потом не забыть про эти правки при обновлении DLE :(


 

Изменено пользователем procpay
Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, procpay сказал:

Прикол в том, что ...


 

Все работает без проблем и без каких-либо правок в движке.Лично проверенно и на локальном сервере и на хостинге.Причем на своем сервере даже не делал каких-либо настроек,касающихся почты.

Скрин настроек на локал.сервере . На яндексе также ничего нигде настраивал.

Изменено пользователем aleksandrhristich
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, aleksandrhristich сказал:

Лично проверенно и на локальном сервере и на хостинге.

Вот с такими настройками будет работать? 23b8b435c782.jpg

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, kamensk сказал:

Вот с такими настройками будет работать? 23b8b435c782.jpg

Я же скрин предоставил с рабочими настройками,зачем спрашивать. С вашими настройками не пробывал,просто не к чему,т.к у меня все работает без проблем.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, aleksandrhristich сказал:

С вашими настройками не пробывал,

Это не мой скрин - а с этой темы.

Спасибо. Не обратил внимание на ссылку на ваш скрин. Теперь увидел. Принял к сведению. Попробую))

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, aleksandrhristich сказал:

Все работает без проблем и без каких-либо правок в движке.Лично проверенно и на локальном сервере и на хостинге.Причем на своем сервере даже не делал каких-либо настроек,касающихся почты.

Скрин настроек на локал.сервере . На яндексе также ничего нигде настраивал.

 

пробовали отправлять на почту mail.ru, yandex.ru? Пробовали зарегистрировать именно новый почтовый аккаунт на яндексе и отправить через него?  Для старых, возможно и работает отправка.
 
у меня выдавал ошибку:  "SMTP Error: data not accepted."  ошибку можно глянуть в отладчике браузера F12 (или Ctrl+Shift + i  - в Опере)  вкладка Сеть  а справа вкладка Ответ   https://prnt.sc/22y174i после отправки сообщения в "обратной связи" сайта.

здесь https://www.smtper.net/ можно проверить свои настройки SMTP-сервера, чтобы понять, что хостер или настройки сервера не влияют.  (но потом лучше сменить пароль на всякий случай)

Изменено пользователем procpay
Ссылка на сообщение
Поделиться на других сайтах

Если бы данные были неверные там логин. пароль или протокол, то ошибка была бы  SMTP Error: Could not authenticate -   https://prnt.sc/22y1rua
 

Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, procpay сказал:

 

пробовали отправлять на почту mail.ru, yandex.ru? Пробовали зарегистрировать именно новый почтовый аккаунт на яндексе и отправить через него?  Для старых, возможно и работает отправка.
 
у меня выдавал ошибку:  "SMTP Error: data not accepted."  ошибку можно глянуть в отладчике браузера F12 (или Ctrl+Shift + i  - в Опере)  вкладка Сеть  а справа вкладка Ответ   https://prnt.sc/22y174i после отправки сообщения в "обратной связи" сайта.

здесь https://www.smtper.net/ можно проверить свои настройки SMTP-сервера, чтобы понять, что хостер или настройки сервера не влияют.  (но потом лучше сменить пароль на всякий случай)

Регистрировать новую почту не охота.Будем надеяться что ответит на все это celsoft

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, aleksandrhristich сказал:

Регистрировать новую почту не охота.Будем надеяться что ответит на все это celsoft

Что я должен на это ответить? Все очень подробно описано в документации яндекса. Все работает независимо от того когда был создан аккаунт, старый или новый. Нужно лишь просто внимательно изучить вопрос, который подробно описан в документации самой почты. Нужно использовать не свой пароль от яндекса, а включить сначала доступ сторонних приложений, и создать специальный отдельный пароль для почты с доступом к SMTP серверу. Читайте яндекс, там все написано в разделе настроек безопасности в аккаунте а также в документации https://yandex.ru/support/mail/mail-clients/others.html

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, celsoft сказал:

Что я должен на это ответить? Все очень подробно описано в документации яндекса. Все работает независимо от того когда был создан аккаунт, старый или новый. Нужно лишь просто внимательно изучить вопрос, который подробно описан в документации самой почты. Нужно использовать не свой пароль от яндекса, а включить сначала доступ сторонних приложений, и создать специальный отдельный пароль для почты с доступом к SMTP серверу. Читайте яндекс, там все написано в разделе настроек безопасности в аккаунте.

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

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, aleksandrhristich сказал:

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

да, в том и суть, Вы скорее всего используете свой обычный пароль от яндекса и у Вас всё работает как и работало ранее, а для новых аккаунтов надо создавать пароли для внешних приложений (как и описал) выше. Если бы яндекс ввел это нововведение для всех аккаунтов и старых тоже, то на куче сайтов перестала работать рассылка и было бы куча негатива.    У gmail.com, кстати, можно использовать обычный пароль от аккаунта, просто там надо включить доступ для ненадежных приложений

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...