Функция возвращает true
в случае успешной отправки email, однако это не означает, что письмо будет получено и прочтено.
wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) |
- $to
- (строка|массив) получатель или получатели письма (в виде массива или через запятую). Обратите внимание, если вы укажете их через запятую, то каждый получатель письма увидит все email-адреса, на которые было выслано это письмо
- $subject
- (строка) тема сообщения
- $message
- (строка) текст сообщения, по умолчанию
text/plain
, это значит, что HTML-теги не поддерживаются, о том, как включить их поддержку, смотрите в примерах - $headers
- (строка|массив) заголовки сообщения
- $attachments
- (строка|массив) вложения к письму, нужно указывать полный путь к файлам на сервере. Для того, чтобы вложить несколько файлов, используйте массив, либо строку, где путь к каждому файлу начинается с новой строки
Пример. Обычная отправка письма
Самый просто пример:
wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение'); |
Изменение имени и email отправителя
В WordPress по умолчанию в качестве отправителя письма выставляется «WordPress»,а в качестве его email «wordpress@truemisha.ru».
Я уже писал пост о том, как изменить стандартное имя и email отправителя для всех писем, отправляемых с блога на WordPress, а сейчас рассмотрим пример только для конкретного письма:
$headers = 'From: Миша <misha@truemisha.ru>' . "rn"; // в виде строки wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers); |
Использование HTML-тегов в письме
Для того, чтобы использовать HTML-теги в тексте сообщения, нужно изменить content-type
письма на text/html
, а это можно сделать двумя способами.
Через фильтр. В таком случае HTML-теги станет возможно использовать в любых письмах, отправляемых с блога, для этого нужно вставить в functions.php
следующий код:
add_filter('wp_mail_content_type', create_function('', 'return "text/html";')); |
Через заголовки. HTML-теги будут разрешены только для конкретного письма.
$headers[] = 'Content-type: text/html; charset=utf-8'; // в виде массива wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers); |
Изменение кодировки письма
Кодировка письма по умолчанию соответствует кодировке блога, но ее тоже можно изменить через заголовки (предыдущий пример) или через фильтр:
add_filter('wp_mail_charset', create_function('', 'return "utf-8";')); |
В предыдущем примере (и по умолчанию тоже) WordPress отправляет письма юникодом, но таким способом вы спокойно можете изменить кодировку например на Windows-1251.
Отправка письма с измененными заголовками и вложениями
В данном случае обе переменные: $attachments
и $headers
— заданы в виде массива.
$attachments[] = WP_CONTENT_DIR . '/uploads/file_1.zip'; $attachments[] = WP_CONTENT_DIR . '/uploads/file_2.zip'; $headers[] = 'From: Миша <misha@truemisha.ru>'; $headers[] = 'Content-type: text/html; charset=utf-8'; wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers, $attachments); |
Источник: misha.blog