WORDPRESS – wystąpił problem z wysłaniem twojej wiadomości. spróbuj ponownie później

WORDPRESS – wystąpił problem z wysłaniem twojej wiadomości. spróbuj ponownie później

Jak wygląda problem?

Jeśli na naszej stronie pod kontorlą WP posiadamy formularz (zazwyczaj przez wtyczkę Contact Form 7) do wysyłania wiadomości możemy natknąć się na błąd:

wystąpił problem z wysłaniem twojej wiadomości. spróbuj ponownie później

Lub inny w zależności od tłumaczeń:

Skutkiem tego wiadomość nie jest wysłana i nie dociera do zdeklarowanego w ustawieniach odbiorcy.

Blokada fukcji mail() w PHP

Na początek upewnij się czy funkcja mail() nie została zablokowana. Należy wtedy zabezpieczyć formularz przez captcha i poprosić admina o odblokowanie tej funkcji. Więcej informacji:

Prosty skrypt do analizy czy funkcja mail() w PHP jest zablokowana

Wysyłanie wiadomosci przez SMTP – odporny na blokadę sposób w WordPress CMS.

Gorzej jeśli na Twoim serwerze są umieszczone inne domeny. I blokada funkcji mail() może być dokonana przez inne strony. Przeważnie dotyczy ona całego serwera – w tym problem.

Jest sposób aby temu zaradzić. Na początek pozyskaj dane do wysyłki wiadomości e-mail przez SMTP. Po prostu utwórz na najlepiej na Twoim hostingu albo darmowej poczcie (UWAGA! z Gmail.com może być problem wybierz jakiś polski odpowiednik) skrzynkę pocztową i pobierz wszystkie dane do połączenia.

Mail nie musi być w domenie strony, lecz dobrze aby był. Wtedy jest mniejsza szansa na trafienie do SPAM.

Następnie w Twoim WP otwórz plik (możesz to zrobić przez FTP albo przez kokpit WP – jednak najlepiej wykonaj wcześniej kopię zapasową plików):

wp-config.php

I przed kodem:

if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

Wstaw:

define( 'SMTP_USER',   'mail@mail.pl' );    // Pełen adres e-mail SMTP - skrzynki którą założyłeś/aś na serwerze
define( 'SMTP_PASS',   'haslo' );       // Hasło
define( 'SMTP_HOST',   'serwer-smtp' );    // Serwer wysyłania poczty
define( 'SMTP_FROM',   'realny-nadawca-email' ); // Tu możesz podać dowolny e-mail - np. email w domenie strony kontakt@
define( 'SMTP_NAME',   'Etykieta-od-kogo' );    // Nazwa nadawcy
define( 'SMTP_PORT',   '587' );                  // Port wysyłania poczty 25 lub 587 (465 dla SSL)
define( 'SMTP_SECURE', 'tls' );                 // tls - zwykłe wysyłanie, ssl - szyfrowane
define( 'SMTP_AUTH',    true );                 // wartości: (true|false)
define( 'SMTP_DEBUG',   0 );                    // dla debugowania ustaw na 1 lub 2

Następnie w pliku:

wp-content/themes/{MOTYW-WP}/functions.php

Wstaw na początku kod:

add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
	if ( ! is_object( $phpmailer ) ) {
		$phpmailer = (object) $phpmailer;
	}

	$phpmailer->Mailer     = 'smtp';
	$phpmailer->Host       = SMTP_HOST;
	$phpmailer->SMTPAuth   = SMTP_AUTH;
	$phpmailer->Port       = SMTP_PORT;
	$phpmailer->Username   = SMTP_USER;
	$phpmailer->Password   = SMTP_PASS;
	$phpmailer->SMTPSecure = SMTP_SECURE;
	$phpmailer->From       = SMTP_FROM;
	$phpmailer->FromName   = SMTP_NAME;
}

Następnie przetestuj wysyłkę.

Niestety możesz natrafić na błędy. Będą one głównie spowodowane poprawna konfiguracją SMTP. Musisz mieć 100% pewność, że podane tam ustawienia działają. Przetestuj je np. w programie pocztowym typu Thunderbird i przenieś do skryput. Ew. skontaktuj się z BOK serwisu gdzie założyłeś/aś tą skrzynkę.

Ważna uwaga! Update WordPressa (także wykonywany automatycznie bez Twojej ingerencji  – w zależności od Twoich ustawień w systemie) może nadpisać te zmiany. Szczególnie w pliku wp-config.php (chociaż.. plik w motywie też może być zmieniony jak aktualizujesz motyw 😉 ). Zatem najlepiej po aktualizacji systemu WP – przetestuj czy wysyłka wiadomości działa jak poprzednio.

Powodzenia !

 

Recommended
Jak wykonać przekierowanie w skrypcie PHP - naprawiające stare, niedziałające…