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.

- Tutor LMS 2.2.0, czyli premiera opcji, pozwalającej na sprzedaż wielu kursów w ramach jednego produktu WooCommerce - 1970-01-01
- Napisy na filmach nagranych za pomocą dronów DJI (np. Mini 3 Pro), czyli dość powszechny „problem”, którego faktycznie nie ma - 1970-01-01
- Kolejna odsłona walki ze współdzieleniem kont w Netflixie, czyli (internetowe) gospodarstwo domowe Netflix - 1970-01-01