Jak wysłać e-mail WordPress za pomocą serwera SMTPTP
Masz problemy z wysyłaniem e-maili w WordPressie? Pod maską WordPress wysyła e-maile za pomocą funkcji mail() PHP. Czasami Twój hosting nie konfiguruje poprawnie ustawień poczty. W rezultacie nie można wysyłać e-maili z Twojej witryny WordPress.
Możesz rozwiązać ten problem, korzystając z serwera SMTP. Zazwyczaj firmy hostingowe udostępniają własny serwer SMTP, którego można używać do wysyłania wiadomości e-mail z witryny.
Alternatywnie możesz przejść do innych serwerów SMTP, takich jak Gmail, Mailjet itp. Wszystko to wymaga podstawowych informacji o serwerze SMTP, takich jak Host, Port itp.
Biorąc to pod uwagę, zobaczmy, jak używać serwera SMTP do wysyłania wiadomości e-mail WordPress.
PHPMailer w WordPress
WordPress zawiera w swoim rdzeniu klasę PHPMailer. Jeśli chcesz to sprawdzić, znajdziesz ten plik pod wp-includes/PHPMailer/PHPMailer.php
.
Jeśli skonfigurujemy PHPMailera w WordPressie, wp_mail
funkcja wysyła e-maile przez tę klasę PHPMailer. W takim przypadku wp_mail
metoda nie zależy od ustawień hostingu. Zamiast tego używają ustawień serwera SMTP.
Zamierzam użyć tej klasy PHPMailer do e-maili. Ponieważ ta klasa jest już zawarta w WordPressie, nie musimy osobno instalować biblioteki PHPMailer.
Można użyć wtyczki WP Mail SMTP, która również wysyła wiadomości e-mail za pomocą serwerów SMTP. Ale zawsze polecam, jeśli coś jest osiągalne przez napisanie małego kawałka kodu, to idź na to. Dobrą praktyką jest używanie jak najmniejszej liczby wtyczek. Korzystanie z większej liczby wtyczek na stronie zwiększa dodatkowe obciążenie serwera. A czasami wtyczki są ze sobą w konflikcie, co może skończyć się zepsutą witryną.
Wyślij e-mail WordPress przez serwer SMTP
Zanim przejdziesz dalej, powinieneś przygotować swoje dane SMTP, takie jak host, port, nazwa użytkownika i hasło.
Jeśli planujesz korzystać z serwera SMTP Gmaila, musisz zmienić niektóre ustawienia na swoim koncie Google. W tym celu zaloguj się na swoje konto Google i kliknij Konto. Gdy znajdziesz się na stronie Konto, kliknij Bezpieczeństwo. Przewiń w dół, a znajdziesz ustawienia „Mniej bezpieczny dostęp do aplikacji". Ustaw go na ON.
Aby skonfigurować PHPMailera w WordPressie, dostępny jest hook, którym jest phpmailer_init. Za pomocą phpmailer_init
hooka możemy uzyskać dostęp do obiektu PHPMailer i ustawić do niego argumenty.
Otwórz functions.php
plik aktywnego motywu i umieść poniższy kod na końcu pliku.
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
}
Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi wartościami. Załóżmy, że używamy serwera SMTP Gmaila, a nasz kod zostanie napisany w następujący sposób:
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';
}
Musisz podać rzeczywistą nazwę użytkownika i hasło do swojego konta Gmail w powyższym kodzie. Teraz spróbuj wysłać e-mail ze swojej witryny WordPress, e-mail powinien zacząć działać.
Debuguj problem z e-mailem
W tej chwili, nawet po użyciu PHPMailera, twoje e-maile nie działają, to za pomocą wp_mail_failed
akcji możesz ustalić przyczynę problemu. Użyj poniższego kodu, aby debugować problem.
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);
}
Mam nadzieję, że rozumiesz, jak wysyłać wiadomości e-mail WordPress za pomocą serwera SMTP. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.
Powiązane artykuły
- Wyślij e-mail za pomocą serwera SMTP Gmaila ze skryptu PHP
- Wysyłanie wiadomości e-mail przez serwer SMTP Gmaila w Laravel
- Wyślij e-mail za pomocą Mailjet w PHP