Настройка отправки сообщений из WPForms через SMTP SendGrid

Если вы используете на своем сайте WordPress плагин WPForms для создания форм обратной связи, регистрации или опросов, то наверняка сталкивались с проблемами доставки писем. Часто сообщения из форм либо попадают в спам, либо не доходят до адресатов. Чтобы гарантировать надежную доставку, рекомендуется использовать сторонние SMTP-сервисы, например, SendGrid. В этой статье подробно расскажу, как настроить отправку сообщений из WPForms через SMTP-сервер SendGrid, а также приведу примеры кода и советы по устранению ошибок.

Почему важно использовать SMTP-серверы для отправки писем в WordPress

По умолчанию WordPress отправляет почту через функцию wp_mail, которая использует PHP mail(). Это простой способ, но у него есть ряд недостатков:

  • Письма часто попадают в спам из-за отсутствия аутентификации.
  • Почтовые серверы могут блокировать такие письма из-за подозрительной активности.
  • Нет возможности отслеживать статистику доставки.

Использование SMTP-сервиса, такого как SendGrid, решает эти проблемы. SendGrid предоставляет надежный почтовый сервер, поддержку аутентификации DKIM, SPF и DMARC, а также удобную панель для мониторинга отправленных писем.

Создание и настройка аккаунта SendGrid

Перед интеграцией с WPForms необходимо создать аккаунт в SendGrid и получить API ключ:

  1. Зарегистрируйтесь на https://sendgrid.com/ и подтвердите email.
  2. Перейдите в раздел "Settings" > "API Keys" и создайте новый ключ с правами "Full Access" или "Mail Send".
  3. Сохраните ключ — он понадобится для настройки SMTP.
  4. Настройте домен отправки (Domain Authentication) для повышения доверия к письмам — это делается в разделе "Sender Authentication".

Настройка WPForms для отправки писем через SMTP SendGrid

WPForms не имеет встроенной поддержки SMTP, поэтому для отправки почты через SendGrid рекомендуется использовать плагин SMTP, например, Clearfy Pro или бесплатный WP Mail SMTP из репозитория WordPress.

Шаги настройки плагина WP Mail SMTP

  1. Установите и активируйте плагин WP Mail SMTP.
  2. Перейдите в WP Mail SMTP > Настройки.
  3. В разделе "Mailer" выберите "SendGrid".
  4. Вставьте полученный API ключ SendGrid.
  5. Укажите "From Email" (адрес отправителя) и имя отправителя.
  6. Сохраните настройки.

Теперь все письма, в том числе и из форм WPForms, будут отправляться через SMTP SendGrid.

Пример кода для отправки письма из WPForms с кастомной логикой (фильтр wpforms_process_complete)

Если нужно добавить дополнительную обработку писем или кастомизировать отправку, можно использовать хук wpforms_process_complete. Пример функции, которая отправляет письмо через SendGrid API отдельно:

function wpturbo_sendgrid_custom_email( $fields, $entry, $form_data ) {
    $to = 'example@domain.com';
    $subject = 'Новое сообщение из формы: ' . $form_data['settings']['form_title'];
    $message = '';

    foreach ( $fields as $field_id => $field ) {
        $message .= $field['name'] . ': ' . $field['value'] . "\n";
    }

    $sendgrid_api_key = 'ВАШ_SENDGRID_API_КЛЮЧ';

    $email_data = [
        'personalizations' => [
            [
                'to' => [[ 'email' => $to ]],
                'subject' => $subject
            ]
        ],
        'from' => [ 'email' => 'no-reply@yourdomain.com' ],
        'content' => [[ 'type' => 'text/plain', 'value' => $message ]]
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/v3/mail/send');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $sendgrid_api_key,
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($email_data));

    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($http_code !== 202) {
        error_log('SendGrid email sending error: ' . $response);
    }
}
add_action('wpforms_process_complete', 'wpturbo_sendgrid_custom_email', 10, 3);

Этот код отправляет письмо напрямую через API SendGrid, минуя стандартные механизмы WordPress. Это удобно для сложной логики и контроля отправки.

Типичные проблемы и их решение при отправке почты через SendGrid и WPForms

Письма не отправляются или зависают

Проверьте правильность API ключа, права доступа и настройки SMTP. Включите логирование в плагине WP Mail SMTP, чтобы увидеть ошибки.

Письма попадают в спам

Убедитесь, что вы настроили DKIM, SPF и DMARC для своего домена через SendGrid. Без этого почтовые сервисы повышают вероятность попадания в спам.

Отправка слишком медленная

Если вы отправляете много писем, используйте пакетную отправку через API SendGrid, а не через SMTP. Также стоит ограничивать скорость отправки.

Заключение

Интеграция WPForms с SendGrid через SMTP или API — надежный способ обеспечить доставку почты с вашего сайта. Используя плагины для SMTP и примеры кода, вы сможете гибко настраивать отправку писем и решать типичные проблемы. Для удобства рекомендую использовать Clearfy Pro, который содержит инструменты для быстрой настройки SMTP и оптимизации сайта.

Автоматическое удаление неиспользуемых вариаций товаров в WooCommerce через код
23.05.2026
Как сделать двухуровневую кэшировку в WordPress для ускорения сайта
03.12.2025
Как создать свой плагин для WordPress с настройками
19.11.2025
WooCommerce: как автоматически удалять неиспользуемые вариации товаров через код
30.05.2026
WooCommerce: настройка и решение проблем с отпуском товаров
21.04.2026