WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

Работа с wp_mail() и отправкой email в WordPress

Функция wp_mail() — это основная функция WordPress для отправки электронной почты, которая предоставляет удобный интерфейс для работы с PHP-функцией mail().

Основной синтаксис

wp_mail( $to, $subject, $message, $headers, $attachments );

Параметры:

Простой пример отправки письма

$to = 'recipient@example.com';
$subject = 'Тема письма';
$message = 'Это тестовое письмо, отправленное через wp_mail().';

$sent = wp_mail($to, $subject, $message);

if ($sent) {
    // Письмо успешно отправлено
} else {
    // Ошибка отправки
}

Расширенные примеры

1. Отправка HTML-писем

$to = 'recipient@example.com';
$subject = 'HTML письмо';
$message = '
<html>
<head>
    <title>HTML письмо</title>
</head>
<body>
    <h1>Привет!</h1>
    <p>Это <strong>HTML-письмо</strong>, отправленное через WordPress.</p>
</body>
</html>
';

$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail($to, $subject, $message, $headers);

2. Отправка нескольким получателям

$to = array(
    'recipient1@example.com',
    'recipient2@example.com'
);

$subject = 'Письмо нескольким получателям';
$message = 'Это письмо будет отправлено нескольким получателям.';

wp_mail($to, $subject, $message);

3. Добавление вложений

$to = 'recipient@example.com';
$subject = 'Письмо с вложением';
$message = 'Проверьте вложение к этому письму.';

$attachments = array(
    WP_CONTENT_DIR . '/uploads/file.pdf'
);

wp_mail($to, $subject, $message, '', $attachments);

4. Установка From заголовка

$to = 'recipient@example.com';
$subject = 'Письмо с кастомным From';
$message = 'Это письмо имеет кастомный адрес отправителя.';

$headers = array(
    'From: Имя Отправителя <sender@example.com>',
    'Content-Type: text/html; charset=UTF-8'
);

wp_mail($to, $subject, $message, $headers);

Настройка SMTP для wp_mail()

По умолчанию WordPress использует PHP-функцию mail(), но лучше настроить SMTP для надежной доставки:

1. Использование плагина

Популярные плагины: WP Mail SMTP, Post SMTP, Easy WP SMTP

2. Ручная настройка через functions.php

add_action('phpmailer_init', 'configure_smtp');

function configure_smtp($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'your@example.com';
    $phpmailer->Password = 'yourpassword';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'your@example.com';
    $phpmailer->FromName = 'Your Name';
}

Фильтры и хуки для wp_mail()

WordPress предоставляет несколько хуков для кастомизации отправки почты:

// Изменение параметров письма перед отправкой
add_filter('wp_mail', function($args) {
    $args['subject'] = '[Мой сайт] ' . $args['subject'];
    return $args;
});

// Использование другого метода отправки
add_action('wp_mail_failed', function($error) {
    error_log('Ошибка отправки письма: ' . $error->get_error_message());
});

Решение распространенных проблем

  1. Письма не доставляются:
  1. Письма отправляются как plain text:
  1. Кодировка символов:
  1. Ограничения на хостинге:

Логирование отправки писем

Для отладки можно добавить логирование:

add_action('wp_mail_failed', 'log_mail_errors', 10, 1);

function log_mail_errors($wp_error) {
    $fn = ABSPATH . '/mail.log'; 
    $fp = fopen($fn, 'a');
    fputs($fp, "[" . date('Y-m-d H:i:s') . "] Mail error: " . $wp_error->get_error_message() . "\n");
    fclose($fp);
}

Функция wp_mail() — это мощный инструмент WordPress для работы с электронной почтой, который при правильной настройке обеспечивает надежную доставку сообщений.

Полный стэк: .NET | Agile | AJAX | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | email | ERP | ESP32 | Fenom | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | Lean | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | Scrum | SCSS | SEO | Simpla | SLA | SOAP | Sphinx | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | W3C | Waterfall | web3 | Webasyst | Webpack | WebSocket | Wishlist | WooCommerce | WordPress | XML | Автоматизация | Безопасность | Бизнес | блокчейн | Вёрстка | движок | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | шаблонизатор | Яндекс.Трекер