Задать вопрос
@AveConstantis

Как подключить PHPMailer в WP?

Говорят есть он под капотом, но как к нему достучаться? Или просто перекинуть папку с либой в корень в темы
  • Вопрос задан
  • 267 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
V_A_B
@V_A_B
¯\_(ツ)_/¯
можете использовать функцию wp_mail (ну или загляните в нее по той же ссылке она
описана
...
    global $phpmailer;
 
    // (Re)create it, if it's gone missing. - (Повторно) создайте его, если он пропал 
   
    if ( ! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) ) {
        require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
        require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
        require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
        $phpmailer = new PHPMailer\PHPMailer\PHPMailer( true );
 
        $phpmailer::$validator = static function ( $email ) {
            return (bool) is_email( $email );
        };
    }
...
и использует PHPMailer)
в остальном не сильно подскажу т.к. никогда не использовал PHPMailer напрямую ибо, если форма не простейшая, вместо wp_mail использую чистый php - функция mail() через sendmail, либо ssmtp на линукс. Но вот так письмо ушло без
ошибок

global $phpmailer; //не помогло
//слизал подключение из wp_mail и отправилось
    // (Re)create it, if it's gone missing.
    if ( ! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) ) {
        require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
        require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
        require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
        $phpmailer = new PHPMailer\PHPMailer\PHPMailer( true );
 
        $phpmailer::$validator = static function ( $email ) {
            return (bool) is_email( $email );
        };
    }

// Создаем письмо
$mail = $phpmailer;
$mail->isSMTP();                   // Отправка через SMTP
$mail->Host   = 'smtp.yandex.ru';  // Адрес SMTP сервера
$mail->SMTPAuth   = true;          // Enable SMTP authentication
$mail->Username   = 'login';       // ваше имя пользователя
$mail->Password   = 'password';    // ваш пароль
$mail->SMTPSecure = 'ssl';         // шифрование ssl
$mail->Port   = 465;               // порт подключения
 
$mail->setFrom('login@ya.ru', 'Иван Иванов');    // от кого
$mail->addAddress('test@ya.ru', 'Вася Петров'); // кому
 
$mail->Subject = 'Тест';
$mail->msgHTML("<html><body>
                <h1>Здравствуйте!</h1>
                <p>Это тестовое письмо.</p>
                </html></body>");
// Отправляем
if ($mail->send()) {
  echo 'Письмо отправлено!';
} else {
  echo 'Ошибка: ' . $mail->ErrorInfo;
}


60b7bde4a36c1614814137.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы