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.
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01