Na jednej ze stron, którą się opiekuje (WordPress, bo tych mam „pod sobą” najwięcej) pojawiła się tymczasowa potrzeba przesyłania kopii (BCC/UDW, czyli ukrytej) wszystkich wysyłanych wiadomości e-mail na kontrolny adres. Zresztą sama przyczyna nie jest istotna, ważne jak można to w prosty sposób zrobić.

Kopia wszystkich widmowości e-mail na wybrany adres

Ten konkretny WordPress wysyła wszystkie wiadomości za pośrednictwem serwisu/usługi SparkPost, co jest realizowane przez ich formową wtyczkę, która niestety na obecną chwilę nie posiada takiej opcji. I choć można to obejść korzystając z szablonów lub wbudowanych haków, to lepszym rozwiązaniem (mniej pracy/nauki dla mnie) wydało mi się skorzystanie z filtra „wp_mail”, który jest dostępny bezpośrednio w WordPressie.

Pierwszy odruch, to kod jak najbardziej prosty – bo w końcu i zadanie przed nim niezbyt skomplikowane (dodajemy go do pliku functions.php lub tworzymy własną wtyczkę):

function webinsider_wp_mail( $mail ) {
 $mail['headers'] = 'BCC: jakiś@adres.email \r\n';
 return $mail;
}
add_filter( 'wp_mail', 'webinsider_wp_mail', 10, 1 );

Jest to rozwiązanie bardzo proste, ale skuteczne. Ma tylko jeden „malutki” problem – rozsypuje wiadomości wysyłane w HTMLu (te napisane w czystym tekście są wysyłane prawidłowo).

W takim razie postanowiłem trochę zmodyfikować powyższy kod, tak by również wiadomości napisane w HTMLu po modyfikacji nagłówka wyświetlały się poprawnie :

function webinsider_wp_mail( $mail ) {
 $bcc_address = sanitize_email( 'jakiś@adres.email' );
 $mail['headers'][] = 'BCC: ' . $bcc_address;
 return $mail;
}
add_filter( 'wp_mail', 'webinsider_wp_mail', 10, 1 );

I teoretycznie wszystko powinno być OK, ale… Nie zawsze, więc dla pewności warto kod rozbudować jeszcze o warunek związany z tabelą:

function webinsider_wp_mail( $mail ) {
 $bcc_address = sanitize_email( 'jakiś@adres.email' );

 if ( is_array( $mail['headers'] ) ) {
 $mail['headers'][] = 'BCC: ' . $bcc_address;
 } else {
 $mail['headers'] = $mail['headers'] . 'BCC: ' . $bcc_address . "\r\n";
 }

 return $mail;
}
add_filter( 'wp_mail', 'webinsider_wp_mail', 10, 1 );

Teoretycznie można by przyjąć, że zazwyczaj będzie nagłówków więcej, ale na wszelki wypadek – a na pewno nie zaszkodzi… ;-)

Oczywiście powyższy kod nie zadziała w sytuacji, gdy jakaś wtyczka/usługa na Waszej stronie korzysta z własnych ustawień związanych z wysyłką wiadomości e-mail (za pośrednictwem zewnętrznego serwera SMTP), pomijając standardową funkcję WordPressa. No i powyższy kod nie musi ograniczać się – tak jak w tym przypadku – do dodania nagłówka/adresu BCC – wszystko zależy od potrzeb.

Zgłoś błąd na stronie

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!