8 часов убил на выяснение. почему мой скрипт отправляет письмо, а не один из плагинов не хочет.
Решение нашёл следующее
скачал библиотеку PHPMailer-6.6.3
переподключил
require_once __DIR__ . '/PHPMailer/Exception.php';
require_once __DIR__ . '/PHPMailer/PHPMailer.php';
require_once __DIR__ . '/PHPMailer/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
//и главная строчка:
$phpmailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Без которой письмо на 587й порт по tls не уходит.
//другие параметры:
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Mailer = 'tls';
$mail->Host = 'smtp.yandex.ru';
$mail->SMTPAuth = true;
$mail->Username = 'noreply@mydomain.ru';
$mail->Password = 'пароль от ящика noreply@mydomain.ru';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 587;
В итоге зашёл в один из плагинов вордпресс, переопределил библиотеку PHPMailer и всё заработало.
Всё дело в том, что мой хостер блочит порты и не разрешает соединяться напрямую с smtp, а для разблокировки портов, просит чуть-ли не наторильную доверенность, сканы 10 документов и т.д.