...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як надіслати електронну пошту WordPress за допомогою SMTP-сервера

23

Ви стикаєтесь із проблемами з надсиланням електронних листів у WordPress? Під капотом WordPress надсилає повідомлення електронної пошти за допомогою функції mail() PHP. Іноді веб-хостинг неправильно налаштовує параметри пошти. Як результат, з вашого веб-сайту WordPress не можна надсилати електронні листи.

Вирішити цю проблему можна за допомогою SMTP-сервера. Зазвичай веб-хостингові компанії надають власний SMTP-сервер, який ви можете використовувати для надсилання електронних листів веб-сайту.

Крім того, ви можете вибрати інші SMTP-сервери, такі як Gmail, Mailjet тощо. Для цього потрібні основні дані про SMTP-сервер, такі як хост, порт тощо.

З огляду на це, давайте подивимося, як використовувати SMTP-сервер для надсилання електронних листів WordPress.

PHPMailer у WordPress

WordPress по суті включає клас PHPMailer. Якщо ви хочете перевірити його, ви знайдете цей файл у wp-includes/PHPMailer/PHPMailer.php.

Якщо ми налаштовуємо PHPMailer у WordPress, wp_mailфункція надсилає електронні листи через цей клас PHPMailer. У цьому випадку wp_mailметод не залежить від налаштувань хостингу. Натомість вони використовують налаштування вашого SMTP-сервера.

Я збираюся використовувати цей клас PHPMailer для електронних листів. Оскільки цей клас уже включений у WordPress, нам не потрібно встановлювати бібліотеку PHPMailer окремо.

Можна використовувати плагін WP Mail SMTP, який також надсилає електронні листи за допомогою SMTP-серверів. Але я завжди рекомендую, якщо щось можна досягти, написавши невеликий фрагмент коду, тоді йдіть на це. Це хороша практика – використовувати якомога менше плагінів. Використання більшої кількості плагінів на веб-сайті збільшує додаткове навантаження на сервер. І іноді плагіни конфліктують між собою, що може потрапити на зламаний сайт.

Надішліть електронну пошту WordPress через SMTP-сервер

Перш ніж продовжувати, ви повинні бути готовими до своїх SMTP-даних, таких як хост, порт, ім’я користувача та пароль.

Якщо ви планували використовувати SMTP-сервер Gmail, то вам потрібно змінити деякі налаштування вашого облікового запису Google. Для цього увійдіть у свій обліковий запис Google і натисніть на обліковий запис. Опинившись на сторінці Обліковий запис, натисніть на Безпека. Прокрутіть униз, і ви знайдете налаштування "Менш безпечний доступ до програми". Встановіть його на ON.

Як надіслати електронну пошту WordPress за допомогою SMTP-сервера

Для налаштування PHPMailer у WordPress існує доступний хук, який називається phpmailer_init. За допомогою phpmailer_initхука ми можемо отримати доступ до об’єкта PHPMailer і встановити для нього аргументи.

Відкрийте файл активної теми functions.phpта розмістіть наведений нижче код в кінці файлу.

add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'YOUR_SMTP HOST';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 'SMTP_PORT'; //25 or 465
    $phpmailer->Username = 'SMTP_USERNAME';
    $phpmailer->Password = 'SMTP_PASSWORD';
    $phpmailer->SMTPSecure = 'ssl'; //ssl or tls
}

Обов’язково замініть заповнювачі фактичними значеннями. Скажімо, ми використовуємо SMTP-сервер Gmail, тоді наш код буде записаний наступним чином:

add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'smtp.googlemail.com'; //gmail smtp host
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 465;
    $phpmailer->Username = 'GMAIL_USERNAME';
    $phpmailer->Password = 'GMAIL_PASSWORD';
    $phpmailer->SMTPSecure = 'ssl';
}

Вам потрібно вказати фактичне ім’я користувача та пароль свого облікового запису Gmail у наведеному вище коді. Тепер спробуйте надіслати електронний лист із веб-сайту WordPress, електронна пошта повинна запрацювати.

Налагодження проблеми електронної пошти

На даний момент, навіть після використання PHPMailer, ваші електронні листи не працюють, тоді, використовуючи wp_mail_failedдію, ви можете виявити причину проблеми. Використовуйте наведений нижче код для налагодження проблеми.

add_action('wp_mail_failed', 'log_mailer_errors', 10, 1);
function log_mailer_errors( $wp_error ){
    $fn = ABSPATH. '/mail.log'; // say you've got a mail.log file in your server root
    $fp = fopen($fn, 'a');
    fputs($fp, "Mailer Error: ". $wp_error->get_error_message() ."n");
    fclose($fp);
}

Сподіваюся, ви розумієте, як надсилати електронні листи WordPress за допомогою SMTP-сервера. Будь ласка, поділіться своїми думками та пропозиціями в розділі коментарів нижче.

Статті, пов’язані з цим

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі