Функция возвращает true
в случае успешной отправки email, однако это не означает, что письмо будет получено и прочтено. Это означает, что сама функция отработала без ошибок.
Кроме того, по умолчанию тип контента письма text/plain
, что значит, что HTML-теги не поддерживаются, но это легко исправить несколькими строчками кода.
Кодировка письма по умолчанию совпадает с кодировкой вашего сайта на WordPress, но и это вы также можете изменить фильтров wp_mail_charset.
wp_mail( $to, $subject, $message, $headers = '', $attachments = array() )
Параметры
- $to
- (строка|массив) получатель или получатели письма (в виде массива или через запятую). Обратите внимание, если вы укажете их через запятую, то каждый получатель письма увидит все email-адреса, на которые было выслано это письмо
- $subject
- (строка) тема сообщения
- $message
- (строка) текст сообщения, по умолчанию
text/plain
, это значит, что HTML-теги не поддерживаются, о том, как включить их поддержку, смотрите в примерах - $headers
- (строка|массив) заголовки сообщения
- $attachments
- (строка|массив) вложения к письму, нужно указывать полный путь к файлам на сервере. Для того, чтобы вложить несколько файлов, используйте массив, либо строку, где путь к каждому файлу начинается с новой строки
Примеры
Обычная отправка письма
wp_mail( 'm@misha.agency', 'Какая-то тема', 'Какое-то сообщение' );
Изменение имени и email отправителя
В WordPress по умолчанию в качестве отправителя письма выставляется «WordPress»,а в качестве его email «wordpress@misha.agency».
Я уже писал пост о том, как изменить стандартное имя и email отправителя для всех писем, отправляемых с блога на WordPress, а сейчас рассмотрим пример только для конкретного письма.
Для этого нам нужно передать параметр $headers
.
wp_mail( 'hr@misha.agency', 'Какая-то тема', 'Какое-то сообщение', array( 'From: Миша <m@misha.agency>' ) );
Использование HTML-тегов в письме, фильтр wp_mail_content_type
Для того, чтобы использовать HTML-теги в тексте сообщения, нужно изменить content-type
письма на text/html
, а это можно сделать двумя способами.
Это можно сделать двумя способами.
Через фильтр – в таком случае HTML-теги станет возможно использовать в любых письмах, отправляемых с блога.
add_filter( 'wp_mail_content_type', 'true_content_type' ); function true_content_type( $content_type ) { return 'text/html'; }
Не знаете, куда вставлять код?
Второй способ – указать заголовки уже при отправке конкретного письма. Тут мы также и устанавливаем кодировку письма.
wp_mail( 'm@misha.agency', 'Какая-то тема', 'Какое-то сообщение', array( 'Content-type: text/html; charset=utf-8' ) );
Изменение кодировки письма, фильтр wp_mail_charset
Кодировка письма по умолчанию соответствует кодировке блога, но ее тоже можно изменить через заголовки (предыдущий пример) или через фильтр:
add_filter( 'wp_mail_charset', 'true_mail_charset' ); function true_mail_charset( $content_type ) { return 'utf-8'; }
Не знаете, куда вставлять код?
В предыдущем примере (и по умолчанию тоже) WordPress отправляет письма юникодом, но таким способом вы спокойно можете изменить кодировку например на Windows-1251.
Отправка письма с вложениями
$upload_dir = wp_upload_dir(); $attachments = array( $upload_dir[ 'path' ] . '/file-1.png', WP_CONTENT_DIR . '/uploads/file-2.txt' ); wp_mail( 'm@misha.agency', 'Письмо с вложениями', 'Вложения приложены', array(), $attachments );