...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak wysłać e-mail WordPress za pomocą serwera SMTPTP

38

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_mailfunkcja wysyła e-maile przez tę klasę PHPMailer. W takim przypadku wp_mailmetoda 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.

Jak wysłać e-mail WordPress za pomocą serwera SMTPTP

Aby skonfigurować PHPMailera w WordPressie, dostępny jest hook, którym jest phpmailer_init. Za pomocą phpmailer_inithooka możemy uzyskać dostęp do obiektu PHPMailer i ustawić do niego argumenty.

Otwórz functions.phpplik 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_failedakcji 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

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów