Отправляет письмо на почту. Похожа на mail() в PHP.
Имя отправителя по умолчанию: WordPress, а email по умолчанию: wordpress@yoursite.com. Их можно переписать изменив заголовок письма на:
From: Example User <email@example.com>
Функция использует фильтры wp_mail_from и wp_mail_from_name, которые влияют на адрес email'a и имя отправителя, соответственно, при этом поле From (от кого) собирается заново. Если только wp_mail_from (email) возвращает значение, то имя указываться не будет вообще: (From: email@example.com)
Тип письма по умолчанию text/plain, а значит в теле письма нельзя использовать html теги. Изменить тип письма можно через фильтр wp_mail_content_type или указав заголовок: content-type: text/html.
Кодировка по умолчанию соответствует кодировке блога (обычно utf-8). Кодировка устанавливается через фильтр wp_mail_charset.
Для работы этой функции сервер должен работать с SMTP и должен быть установлен smtp_port в php.ini.
pluggable функция — эту функцию можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.
Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.
email получателя письма. Несколько получателей указываются в массиве или через запятую в строке.
$subject(строка) (обязательный)
Тема письма (заголовок).
$message(строка) (обязательный)
Тело письма (содержание, контент).
$headers(строка/массив)
Заголовки письма, указывающие на его атрибуты. Для продвинутого использования. Может быть:
from - от кого. Пр. webmaster@example.com
content-type - text/html, text/plain
cc - some@gmail.com — точная копия (carbon copy) — вторичные получатели письма, которым направляется копия. Они видят и знают о наличии друг друга.
bcc - some@gmail.com — скрытая точная копия (blind carbon copy) — скрытые получатели письма - их адреса не показываются другим получателям.
reply-to - FromEmail@example.com
и любые другие произвольные параметры.
По умолчанию: ''
$attachments(строка/массив)
Файлы, которые следует прикрепить к письму. Указываем полный путь до файла (название файла включительно). Если нужно прикрепить несколько файлов указываем их названия в массиве или в строке через перенос строки. По умолчанию: array()
Примеры
4
#1 Пример использования массива для указания заголовков письма:
// подразумевается что $to, $subject, $message уже определены...
// удалим фильтры, которые могут изменять заголовок $headers
// remove_all_filters( 'wp_mail_from' );
// remove_all_filters( 'wp_mail_from_name' );
$headers = array(
'From: Me Myself <me@example.net>',
'content-type: text/html',
'cc: John Q Codex <jqc@wordpress.org>',
'cc: John2 Codex <j2qc@wordpress.org>',
'bcc: iluvwp@wordpress.org', // тут можно использовать только простой email адрес
);
wp_mail( $to, $subject, $message, $headers );
Отправим письмо от My Name <myname@mydomain.com> с прикрепленным файлом attach.zip:
На некоторых серверах (хостингах) в поле FROM (в части email) обязательно должен фигурировать домен сайта, иначе, например, яндекс почта не получит письмо. Проверял на хостинге Бегет.
Т.е. в этом случае лучше не указывать From:, а изменить только часть этого поля, только имя, через фильтр:
add_filter( 'wp_mail_from_name', function($from_name){
return 'Мое имя, а не WordPress'; // тут можно указать свою почту: asd@asd.ru
} );
// удалим фильтры, которые могут изменять заголовок $headers
// remove_all_filters( 'wp_mail_from' );
// remove_all_filters( 'wp_mail_from_name' );
$attachments = array(WP_CONTENT_DIR . '/uploads/attach.zip');
$headers = 'From: My Name <myname@mydomain.com>' . "\r\n";
wp_mail('test@test.com', 'Тема', 'Содержание', $headers, $attachments);
// test@test.com - кому отправляем.
0
#4 Отправим письмо двум пользователям сразу и зададим формат письма html:
$multiple_to_recipients = array(
'recipient1@example.com',
'recipient2@foo.example.com'
);
add_filter( 'wp_mail_content_type', 'set_html_content_type' );
wp_mail( $multiple_to_recipients, 'The subject', '<p>The <em>HTML</em> message</p>' );
// Сбросим content-type, чтобы избежать возможного конфликта
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );
function set_html_content_type() {
return 'text/html';
}