wpmail.ru wordpress WP Mail

Как добавить приложение для отправки email с использованием OAuth2 в WooCommerce

Диагностика проблемы: почему стандартный SMTP не всегда подходит для WooCommerce

WooCommerce по умолчанию отправляет письма через PHP mail() или SMTP, что часто приводит к блокировкам и попаданию писем в спам. Особенно это актуально при массовой рассылке уведомлений о заказах, изменениях статуса и промоакциях. Многие почтовые провайдеры, например Gmail и Outlook, требуют использования OAuth2 для безопасной авторизации, что невозможно реализовать через простой SMTP с паролем.

Если вы пытаетесь отправлять письма через Gmail SMTP с обычной аутентификацией, но письма не доходят или блокируются, вероятнее всего, проблема в устаревшем методе авторизации.

Пошаговое решение: интеграция отправки email через OAuth2 в WooCommerce

1. Регистрация приложения в Google Cloud Console

  1. Перейдите в Google Cloud Console.
  2. Создайте новый проект или выберите существующий.
  3. В разделе OAuth consent screen настройте экран согласия, добавьте необходимые данные и домены.
  4. В разделе Credentials создайте OAuth 2.0 Client ID для веб-приложения, укажите URI для перенаправления (redirect URI) — например, https://your-site.com/oauth2callback.
  5. Сохраните Client ID и Client Secret.

2. Установка и настройка плагина SMTP с поддержкой OAuth2

Используйте плагин Post SMTP Mailer/Email Log или WP Mail SMTP — оба поддерживают OAuth2 для Gmail.

  1. Установите и активируйте плагин.
  2. В настройках выберите Gmail или Google Workspace как почтовый сервис.
  3. Введите Client ID и Client Secret из Google Cloud Console.
  4. Авторизуйтесь через Google, чтобы получить токены доступа.

3. Настройка WooCommerce для использования нового способа отправки писем

WooCommerce по умолчанию использует функцию wp_mail(). После настройки плагина SMTP с OAuth2 все письма WooCommerce будут отправляться через этот плагин без дополнительной настройки.

Если у вас кастомный код для отправки писем, убедитесь, что он вызывает wp_mail(), а не напрямую SMTP.

Проверка результата после внедрения

Чтобы убедиться, что письма отправляются через OAuth2:

  • Перейдите в настройки плагина SMTP и посмотрите журнал отправленных писем.
  • Создайте тестовый заказ в WooCommerce и проверьте получение уведомления на почту.
  • Проверьте заголовки письма (в почтовом клиенте) — они должны содержать информацию о том, что письмо отправлено через Gmail API или OAuth2-плагин.

Частые ошибки и как их исправить

  • Ошибка авторизации OAuth2: проверьте правильность Client ID, Client Secret и URI перенаправления.
  • Письма не отправляются, ошибки в журнале SMTP: убедитесь, что у вашего Google-аккаунта разрешен доступ для приложения, и что токены не истекли.
  • Письма попадают в спам: настройте SPF, DKIM и DMARC для вашего домена, чтобы повысить доверие почтовых сервисов.
  • Проблемы с кешированием токенов: убедитесь, что плагин сохраняет и обновляет токены доступа корректно.

Практические советы по безопасности и производительности

  • Не храните Client Secret в открытом виде в коде, используйте настройки плагина.
  • Регулярно обновляйте плагины для поддержки последних версий OAuth2 и API Google.
  • Ограничьте доступ к Google Cloud Console и OAuth-данным только необходимым администраторам.
  • Для массовых рассылок используйте очередь отправки писем, чтобы не превышать лимиты Gmail.

Сравнение вариантов реализации отправки писем с OAuth2

МетодПлагинКодПлюсыМинусы
Post SMTP MailerЕстьМинимальныйПоддержка OAuth2, журнал писем, простой интерфейсЗависимость от плагина, возможны конфликты
WP Mail SMTPЕстьМинимальныйИнтеграция с популярными SMTP, OAuth2, поддержка APIПремиум-функции платные
Собственный код на PHPMailerНетБольшойМаксимальный контроль, кастомизацияСложность реализации, поддержка токенов

Пример кода для отправки письма через wp_mail()

add_action('woocommerce_order_status_completed', 'send_custom_email_on_order_complete', 10, 1);
function send_custom_email_on_order_complete($order_id) {
    $order = wc_get_order($order_id);
    $to = $order->get_billing_email();
    $subject = 'Ваш заказ #'.$order_id.' завершён';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    $message = 'Спасибо за покупку! Ваш заказ успешно обработан.';
    wp_mail($to, $subject, $message, $headers);
}

Пример настройки OAuth2 в Post SMTP (конфигурация вручную)

/* В настройках плагина укажите:
Client ID: ваш Client ID из Google
Client Secret: ваш Client Secret
Redirect URI: https://your-site.com/oauth2callback

Затем выполните авторизацию через интерфейс плагина.
*/
×
WPRemark
Внимание Внимание Внимание Внимание
-15%

на WPRemark плагин WordPress

Прокачай свой сайт! ⋙