Почтовый сервер wordpress. Что делать если не работает форма обратной связи? Настройка почты на WordPress. Что такое SMTP

Один из важнейших вопросов работы сайта - почтовый сервер, т.е. отправка писем с сайта. Это может быть форма обратной связи, Заявка, Заказ, Обратный звонок и т.д.

Отправка писем с сайта

У многих хостингов существует свой почтовый сервер и формы с таких плагинов как Contact Form 7 будут отправляться без дополнительных настроек. Но для лучшей работы и больше надежности лучше делегировать почтовый сервер на крупные сервисы, такие как Яндекс, Google, Mail.ru. Создание почтового сервера на таких сервисах называется почтой домена . Почта домена дает возможность создания почтовых ящиков вида: [email protected]

Почта домена на Yandex

  1. Нужно войти (или завести) в учетную запись Yandex.

    Домен будет привязан к этой учётке. Если нужно отдать доступ заказчику не стоит подключать к своему аккаунту.

  2. Переходим в сервис почта домена
  3. Указываем домен, для которого нужно создать почту, нажимаем подключить домен
  4. Делегируем домен на yandex, для этого прописываем у домена dns сервера yandex
    dns1.yandex.net
    dns2.yandex.net

    Либо создаем А-запись по инструкции, без полного делегирования. Второй вариант более предпочтительный, т.к. таким образом на Яндекс мы делегируем только почту.
  5. Через некоторое время нажимаем кнопку «Проверить владение доменом» (обычно несколько часов), и когда домен делегируется можно будет создать ящик (и не один).
  6. Заходим в ящик под созданным паролем и проходим краткую регистрацию, после этого ящик начинает функционировать.

Восстановление доступа к почте домена Яндекс

Если утеряны данные по аккаунту Яндекс к которому привязан домен, то чтобы перепривязать его к другому аккаунту нужно проделать следующее:

  1. Создать новую учетку Яндекс.
  2. Написать запрос в тех.поддержку Яндекс об изменении учетной записи к которой привязан домен. В форме необходимо будет указать 3 заведенных ящика (либо все если их 3 или меньше).
  3. Скорее всего поддержка предложит переслать на указанный при регистрации домена e-mail прислать код подтверждения. Узнать какой e-mail указан в виде администраторского нужно в личном кабинете, где куплен домен. Проверить отправку письма на e-mail можно из формы .
  4. Пересылаем код подтверждения сотруднику Яндекс и он привязывает домен на указанный новый аккаунт.

Перехват владения доменом на Яндекс

Можно создать на Коннект почту домена подтвердив права на него. При этом если для этого домена уже создана почта на Яндексе, то он предложит 2 варианта: восстановить права на домен, либо создать новую почту. Если выбран второй вариант, то по старому расположению домена почты перестанут работать и расширение сайта после @ у них измениться на техническое (пример: @site-ru-88888.yaconnect.com). Если вернуть права на домен на первоначальном аккаунте, то почта вернет обычный вид и снова будет работать.

Почта домена на Google

Все что надо знать о корпоративной почте на Google — она платная.

Настройка SMTP

Для корректной работы почты домена на сайте нужно установить плагин WP Mail SMTP и настроить его так:
From Email - адрес, с которого будут отправляться письма и на который получатель отправит ответ, нажав на кнопку «Ответить» в своей почте.

From Name - имя отправителя, можно указать название сайта или свое имя и фамилию.

Mailer - отправка писем через системный транспорт (функция mail()) или через SMTP-сервер. Выбираем «Send all WordPress emails via SMTP».

SMTP Host - адрес SMTP-сервера. Можно узнать у службы поддержки или в справочном разделе. Для Яндекс Почты используйте smtp.yandex.ru, для Gmail - smtp.gmail.com.

SMTP Port - порт SMTP-сервера, зависит от типа шифрования (Encryption). Для Яндекс Почты и Gmail используйте порт 465.

Encryption - тип шифрования. Для Яндекс почты и Gmail необходимо установить «Use SSL encryption».

Authentication - требуется ли выполнять авторизацию на почтовом сервере. Устанавливаем «Yes: Use SMTP authentication».

Username - логин от почты. Как правило, полный адрес почтового ящика, должен совпадать со значением, указанным в поле From Email.

Password - пароль от почтового ящика.

После сохранения настроек можно протестировать ящик (блок Send a Test Email). Мгновенно придет отчет все ли в норме.
The result was: bool(true) — все в порядке, если bool(false) — то надо смотреть логи.

Ошибки и решения

Ошибка: extension missing openssl (Отсутствует расширение OpenSSL).
Решение: отключить тип шифрования, сделать «Без шифрования» и соответственно изменить SMTP Port.

Ошибка: Could not authenticate (Не удалось выполнить аутентификацию).
Решение: зайти на подключаемый ящик, и проверить все ли в порядке, пройдена ли регистрация ящика.

Почта домена на хостинге

Крупные хостинги предоставляют свои почтовые сервера. Надо только найти данные по настройке SMTP.

Почта домена на mail.ru

У Mail.ru почта домена называется Почта для бизнеса.

1. Подтверждаем владение доменом одним из 3-х способов.
2. Прописываем в DNS домена MX-запись
Имя поддомена: @
Тип записи: MX
Данные: emx.mail.ru.

Привет! Мы продолжаем разбирать самые интересные и самые полезные плагины для сайта WordPress ! Сегодня вы узнаете о полезном плагине, который поможет вам переконфигурировать функцию wp_mail() для использования SMTP вместо PHP mail(), а также создает страницу в админ-панели WordPress для изменения настроек почты.

Установить плагин вы сможете прямо из админ-панели WordPress. Перейдите на страницу: Плагины – Добавить новый , введите название плагина в форму поиска, нажмите Enter, установите и активируйте плагин.

– From Email, укажите здесь email адрес отправителя писем.

– From Name, имя отправителя писем.

– Mailer, выберите функцию для отправки писем. Рекомендуется по умолчанию – Send all WordPress emails via SMTP .

– Return Path, включить функцию возврата писем.

SMTP Options. Данные параметры для отправки почты по протоколу SMTP.

– SMTP Host, название вашего хоста.

– SMTP Port, укажите ваш порт. Если вы не знаете где взять данные параметры, обратитесь к вашему хостинг-провайдеру.

– Encryption, выберите тип шифрования:

  • No encryption, без шифрования.
  • Use SSL encryption, шифрование SSL.
  • Use TLS encryption. This is not the same as STARTTLS. For most servers SSL is the recommended option, Использовать шифрование TLS. Для большинства серверов SSL – это рекомендуемый вариант.

– Authentication,

  • No: Do not use SMTP authentication, не использовать проверку подлинности SMTP.
  • Yes: Use SMTP authentication, использовать проверку подлинности SMTP.
  • Если указано значение НЕТ, значения ниже (логин и пароль) игнорируются.

– Username, имя пользователя. (от панели управления на хостинге)

– Password, пароль.

Сохраните изменения .

Send a Test Email. Тест для отправки писем.

– To:, укажите здесь email адрес, на который будет выслано тестовое письмо, для проверки работоспособности функции.

Отправляет письмо на почту. Похожа на mail() в PHP.

Имя отправителя по умолчанию: WordPress , а email по умолчанию: [email protected] . Их можно переписать изменив заголовок письма на:

From: Example User

Функция использует фильтры wp_mail_from и wp_mail_from_name , которые влияют на адрес email"a и имя отправителя, соответственно, при этом поле From (от кого) собирается заново. Если только wp_mail_from (email) возвращает значение, то имя указываться не будет вообще: (From: [email protected])

Тип письма по умолчанию 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 .

Замена функции (переопределение) - в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Хуки из функции
Возвращает

true, если удалось отправить письмо и false, если нет.

true не означает, что письмо дошло до адресата, а означает только то, что функция проделала всю процедуру отправки письма без ошибок.

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

wp_mail($to, $subject, $message, $headers, $attachments); $to(строка/массив) (обязательный) email получателя письма. Несколько получателей указываются в массиве или через запятую в строке.
По умолчанию: нет $subject(строка) (обязательный) Тема письма (заголовок).
По умолчанию: нет $message(строка) (обязательный) Тело письма (содержание, контент).
По умолчанию: нет $headers(строка/массив)

Заголовки письма, указывающие на его атрибуты. Для продвинутого использования. Может быть:

  • from - от кого. Пр. [email protected]
  • content-type - text/html , text/plain
  • cc - [email protected] - точная копия (carbon copy) - вторичные получатели письма, которым направляется копия. Они видят и знают о наличии друг друга.
  • bcc - [email protected] - скрытая точная копия (blind carbon copy) - скрытые получатели письма, чьи адреса не показываются другим получателям.
  • reply-to - [email protected]
  • и любые другие произвольные параметры.

По умолчанию: ""

$attachments(строка/массив) Файлы, которые следует прикрепить к письму. Указываем полный путь до файла (название файла включительно). Если нужно прикрепить несколько файлов указываем их названия в массиве или в строке через перенос строки.
По умолчанию: array()

Примеры

#1. Пример отправки письма

Отправим письмо от My Name с прикрепленным файлом attach.zip:

На некоторых серверах (хостингах) в поле FROM (в части email) обязательно должен фигурировать домен сайта, иначе, например, яндекс почта не получит письмо. Проверял на хостинге Бегет.

Т.е. в этом случае лучше не указывать From: , а изменить только часть этого поля, только имя, через фильтр:

Add_filter("wp_mail_from_name", function($from_name){ return "Мое имя, а не WordPress"; // тут можно указать свою почту: [email protected] });

// удалим фильтры, которые могут изменять заголовок $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 " . "\r\n"; wp_mail("[email protected]", "Тема", "Содержание", $headers, $attachments); // [email protected] - кому отправляем.

#2. Пример использования массива для указания заголовков письма:

// подразумевается что $to, $subject, $message уже определены... // удалим фильтры, которые могут изменять заголовок $headers // remove_all_filters("wp_mail_from"); // remove_all_filters("wp_mail_from_name"); $headers = array("From: Me Myself ", "content-type: text/html", "Cc: John Q Codex ", "Cc: [email protected]", // тут можно использовать только простой email адрес); wp_mail($to, $subject, $message, $headers);

#3. Отправим письмо двум пользователям сразу и зададим формат письма html:

$multiple_to_recipients = array("[email protected]", "[email protected]"); add_filter("wp_mail_content_type", "set_html_content_type"); wp_mail($multiple_to_recipients, "The subject", "

The HTML message

"); // Сбросим content-type, чтобы избежать возможного конфликта remove_filter("wp_mail_content_type", "set_html_content_type"); function set_html_content_type() { return "text/html"; }

#4. Настройка параметров отправки через фильтры

#1 Этот пример показывает как изменить тип письма на html, используя фильтр wp_mail_content_type:
add_filter("wp_mail_content_type", function($content_type){ return "text/html"; }); wp_mail("[email protected]", "The subject", "

The HTML message

");
#2 Укажем свой адрес email в заголовке письма:
add_filter("wp_mail_from", "vortal_wp_mail_from"); function vortal_wp_mail_from($email_address){ return "[email protected]"; } // получим заголовок: WordPress
#3 Укажем имя в заголовке письма:
add_filter("wp_mail_from_name", "vortal_wp_mail_from_name"); function vortal_wp_mail_from_name($email_from){ return "XXX"; } // получим заголовок: XXX

Код wp mail : wp-includes/pluggable.php WP 5.2.1

0) { $from_name = substr($content, 0, $bracket_pos - 1); $from_name = str_replace(""", "", $from_name); $from_name = trim($from_name); } $from_email = substr($content, $bracket_pos + 1); $from_email = str_replace(">", "", $from_email); $from_email = trim($from_email); // Avoid setting an empty $from_email. } elseif ("" !== trim($content)) { $from_email = trim($content); } break; case "content-type": if (strpos($content, ";") !== false) { list($type, $charset_content) = explode(";", $content); $content_type = trim($type); if (false !== stripos($charset_content, "charset=")) { $charset = trim(str_replace(array("charset=", """), "", $charset_content)); } elseif (false !== stripos($charset_content, "boundary=")) { $boundary = trim(str_replace(array("BOUNDARY=", "boundary=", """), "", $charset_content)); $charset = ""; } // Avoid setting an empty $content_type. } elseif ("" !== trim($content)) { $content_type = trim($content); } break; case "cc": $cc = array_merge((array) $cc, explode(",", $content)); break; case "bcc": $bcc = array_merge((array) $bcc, explode(",", $content)); break; case "reply-to": $reply_to = array_merge((array) $reply_to, explode(",", $content)); break; default: // Add it to our grand headers array $headers[ trim($name) ] = trim($content); break; } } } } // Empty out the values that may be set $phpmailer->clearAllRecipients(); $phpmailer->clearAttachments(); $phpmailer->clearCustomHeaders(); $phpmailer->clearReplyTos(); // From email and name // If we don"t have a name from the input headers if (! isset($from_name)) { $from_name = "WordPress"; } /* If we don"t have an email from the input headers default to wordpress@$sitename * Some hosts will block outgoing mail from this address if it doesn"t exist but * there"s no easy alternative. Defaulting to admin_email might appear to be another * option but some hosts may refuse to relay mail from an unknown domain. See * https://core.trac.wordpress.org/ticket/5007. */ if (! isset($from_email)) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER["SERVER_NAME"]); if (substr($sitename, 0, 4) == "www.") { $sitename = substr($sitename, 4); } $from_email = "wordpress@" . $sitename; } /** * Filters the email address to send from. * * @since 2.2.0 * * @param string $from_email Email address to send from. */ $from_email = apply_filters("wp_mail_from", $from_email); /** * Filters the name to associate with the "from" email address. * * @since 2.3.0 * * @param string $from_name Name associated with the "from" email address. */ $from_name = apply_filters("wp_mail_from_name", $from_name); try { $phpmailer->setFrom($from_email, $from_name, false); } catch (phpmailerException $e) { $mail_error_data = compact("to", "subject", "message", "headers", "attachments"); $mail_error_data["phpmailer_exception_code"] = $e->getCode(); /** This filter is documented in wp-includes/pluggable.php */ do_action("wp_mail_failed", new WP_Error("wp_mail_failed", $e->getMessage(), $mail_error_data)); return false; } // Set mail"s subject and body $phpmailer->Subject = $subject; $phpmailer->Body = $message; // Set destination addresses, using appropriate methods for handling addresses $address_headers = compact("to", "cc", "bcc", "reply_to"); foreach ($address_headers as $address_header => $addresses) { if (empty($addresses)) { continue; } foreach ((array) $addresses as $address) { try { // Break $recipient into name and address parts if in the format "Foo " $recipient_name = ""; if (preg_match("/(.*)<(.+)>/", $address, $matches)) { if (count($matches) == 3) { $recipient_name = $matches; $address = $matches; } } switch ($address_header) { case "to": $phpmailer->addAddress($address, $recipient_name); break; case "cc": $phpmailer->addCc($address, $recipient_name); break; case "bcc": $phpmailer->addBcc($address, $recipient_name); break; case "reply_to": $phpmailer->addReplyTo($address, $recipient_name); break; } } catch (phpmailerException $e) { continue; } } } // Set to use PHP"s mail() $phpmailer->isMail(); // Set Content-Type and charset // If we don"t have a content-type from the input headers if (! isset($content_type)) { $content_type = "text/plain"; } /** * Filters the wp_mail() content type. * * @since 2.3.0 * * @param string $content_type Default wp_mail() content type. */ $content_type = apply_filters("wp_mail_content_type", $content_type); $phpmailer->ContentType = $content_type; // Set whether it"s plaintext, depending on $content_type if ("text/html" == $content_type) { $phpmailer->isHTML(true); } // If we don"t have a charset from the input headers if (! isset($charset)) { $charset = get_bloginfo("charset"); } // Set the content-type and charset /** * Filters the default wp_mail() charset. * * @since 2.3.0 * * @param string $charset Default email charset. */ $phpmailer->CharSet = apply_filters("wp_mail_charset", $charset); // Set custom headers if (! empty($headers)) { foreach ((array) $headers as $name => $content) { $phpmailer->addCustomHeader(sprintf("%1$s: %2$s", $name, $content)); } if (false !== stripos($content_type, "multipart") && ! empty($boundary)) { $phpmailer->addCustomHeader(sprintf("Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary)); } } if (! empty($attachments)) { foreach ($attachments as $attachment) { try { $phpmailer->addAttachment($attachment); } catch (phpmailerException $e) { continue; } } } /** * Fires after PHPMailer is initialized. * * @since 2.2.0 * * @param PHPMailer $phpmailer The PHPMailer instance (passed by reference). */ do_action_ref_array("phpmailer_init", array(&$phpmailer)); // Send! try { return $phpmailer->send(); } catch (phpmailerException $e) { $mail_error_data = compact("to", "subject", "message", "headers", "attachments"); $mail_error_data["phpmailer_exception_code"] = $e->getCode(); /** * Fires after a phpmailerException is caught. * * @since 4.4.0 * * @param WP_Error $error A WP_Error object with the phpmailerException message, and an array * containing the mail recipient, subject, message, headers, and attachments. */ do_action("wp_mail_failed", new WP_Error("wp_mail_failed", $e->getMessage(), $mail_error_data)); return false; } }

Так как про него пишут практически все и много, видимо так действует этот движок на народ, сродни эпидемии. Вот и меня зацепила зараза, и все из за возникшей проблемы с доставкой писем через WP. Как оказалось существует этот неприятный глюк давно и периодически дает о себе знать многим кто работает с . Вообще этот движок не дает расслабиться и постоянно приходится орудовать лопатой разгребая кучу проблем возникающих в процессе ведения блога.

Накатил косяк с не отправкой писем, после переезда на новый хостинг и обновления движка. Тихо-мирно, после обновы, решил проверить форму обратной связи, а так же отправить бекап базы данных к себе на почту. Письма вроде бы и уходили, а в почтовом ящике тишина и спокойствие. Конечно я воспринял все это без истерики, уже привык к выкидонам движка. Перекурив и собравшись с мыслями стал искать решение и способ устранения неполадок.
Первым делом пробил свой хостинг на наличие поддержки функции mail () , все в порядке оказалось. Cтал искать способ для отправки писем через SMTP.
Решений как оказалось предлагают много, например предложил немного подправить код в файле wp-includes/class-phpmailer.php . Вариант по исполнению отличный, но мне не помог.
Тут «понеслась душа в рай», в ход пошли один плагин за другим, ставил разные и много, но по тем или иным причинам отказывался от их использования.
Создание e-mail вида wordpress@имя_домена , по ряду причин тоже не принесло положительных результатов.
Когда стал закипать мозг и сходиться глаза в кучу, натолкнулся на неприметный такой плагинчик . У нас описание этого плагина встретил лишь один раз и то поверхностное, может просто плохо искал. Решительно зашел к автору на сайт, почитал в меру своих знаний буржуинского и решил попробовать до кучи еще и этот способ. Поставил плагин к себе на блог и несмотря на всю невзрачность и легковесность, помог «буржуинский бродяга» измученному Российскому пользователю, пошли письма на почту, и самое главное стали доходить до адресата.

И так давайте подробно рассмотрим работу плагина для настройки SMTP рассылки в WordPress:

Configure SMTP

В свое время, чисто для себя сделал перевод плагина configure-smtp 2.7 , переводить там в принципе особенно и нечего, все интуитивно понятно и так, но хочется все же читать на родном языке о том, что делаешь в плане настроек. Так что кого заинтересует можете скачать и протестировать русскоязычный плагин Configure SMTP версии 2.7:

Скачать русскую версию плагина:

Немедленно после того, как письмо отправлено, в голову приходят свежие мысли. (закон письма)

Всем привет!

Плагин достаточно прост в управлении и настройке. Впрочем, и с ним возможны неполадки. Причин тому, что не работает Contact form 7 на WordPress может быть несколько. Приведем наиболее распространенные из них.

Почему не работает контактная форма WordPress?

Неподходящая тема или ошибка в теме

Частая проблема, из-за которой не работает контактная форма WordPress – неподходящая тема или же ошибки в Javascript-е темы. Для того чтобы понять, по этой ли причине у вас не работает форма обратной связи WordPress, нужно зайти в админку и выбрать вкладку «Темы». Там поменять шаблон на «тему по умолчанию» и после этого проверить работу отправки сообщений и внешний вид контактной формы. Если после этого сообщения отправляются, и почта работает – значит, нужно править ошибки в выбранной вами теме, так как из-за нее и не отправляется сообщение.

Несоответствие плагинов с Contact Form 7

Плагин для WordPress Contact Form 7 может не работать из-за того, что другие плагины на вашем сайте конфликтуют с ним, и в результате Вордпресс не отправляет почту. Чтобы исключить данную проблему – поочередно отключаем остальные плагины один за одним, каждый раз обновляя страницу обратной связи. Если после отключения одного из плагинов, контактная форма заработала, значит вы нашли корень проблемы. Ищите, чем заменить конфликтующий плагин. Если же вы отключили все плагины, а Contact Form 7 так и не работает, ищем ошибку дальше.

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

Возможен вариант, что письма попадают в спам. Если писем ежедневно приходит достаточно большое количество, спам-фильтр может начать их блокировать. Чтобы избежать этого, нужно зайти в настройки почты, которую вы используете для Вордпресс-блога, и отметить важные письма как не спам (если вы все-таки нашли их в папке со спамом). После того, почтовый сервис должен впредь их распознавать как не спамные.

Проверить работу обратной связи без плагина

Вы можете протестировать отправку почты на своем блоге без участия плагина. Вот статья о том, как это сделать – ». Это верный способ узнать, где спряталась ошибка – в самом плагине Contact Form, либо же она возникает непосредственно при отправке почты в WordPress.

Проблема вызвана хостингом

Чаще всего это выглядит так: сообщение отправляется, но не приходит на почту.

Бывает, что по какой-то причине (например, в случае атаки на сервер или же массовой рассылки писем) хостинг перестал отправлять письма. В этом случае настройка отправки почты на WordPress без участия вашего провайдера не обойдется. Необходимо связаться с технической поддержкой вашего хостинг-провайдера и выяснить причины проблемы. В данном случае вы не будете получать письма не только из контактной формы WordPress, но и сообщения о новых комментариях на блоге.

Но чаще всего подобные проблемы возникают при . В данном случае вам нужно обратить внимание на настройку почты на WordPress.

Плагин WP Mail SMTP

В Вордпресс есть встроенная функция отправки писем PHP Mail, но не на всех хостингах она работает корректно. Потому, если Вордпресс не отправляет почту, потребуется установить плагин WP Mail SMTP. Он активизирует возможность подключаться к SMTP-серверу. При этом ваш хостинг-провайдер должен допускать возможность подключения к внешним SMTP-серверам, а объем рассылок в день не должен превышать 2000 писем (ограничения Гугл и Яндекса).

Если данные условия соблюдены, переходим к WP Mail SMTP.

После того, как плагин установлен, потребуется создать почтовый ящик на Gmail, либо на Яндексе. Почту для домена на Яндексе можно создать перейдя по ссылке — .

Если вы создаете почтовый ящик блога на стороннем ресурсе, а не на хостинге, у вас появится ряд преимуществ. Вы не будете зависеть от стабильности работы хостинга, вам не придется доплачивать за увеличение объемов почты. Кроме того, работать в привычном интерфейсе почтового сервиса удобнее.

Ниже приведен образец настройки WP Mail SMTP на WordPress на примере e-mail на Yandex.ru.

Где SMTP Port – это SMTP порт сервера, на котором размещен почтовый ящик (в моем примере – SMTP порт Яндекс-почты).

Вместо вы вписываете название почтового ящика, который создали для вашего домена (любое имя @ название домена).

Такой же почтовый адрес вам необходимо указать в общих параметрах блога («Параметры» — «Общие настройки»).

Именно сюда вам должно прийти тестовое письмо, если все настроено верно.

Вот видео-инструкция о том, как настроить WP Mail SMTP:

Еще один плагин почты для WordPress, который похожим образом решает вопросы отправки-получения писем — Configure SMTP. Он так же достаточно прост в установке и настройке. Выбирайте тот плагин, который вам больше по душе.

Если вы все же не хотите создавать почтовый ящик на Яндексе или Гмейле, можно попробовать решить проблему с отправкой почты на Вордпресс и непосредственно на хостинге. Для этого вам также потребуется создать почтовый ящик, но на хостинге. При этом он должен быть такого вида: (где после собачки – название вашего домена).

Дело в том, что WordPress в строке отправителя указывает такой адрес, а некоторые хостинги не отправляют почту, если такого е-мэйла не существует фактически.

По такому же принципу можно устранить некоторые неполадки, если не работает Contact Form 7 на WordPress. В поле From при настройке плагина на вкладке «Письмо» впишите подобный почтовый адрес с именем домена.

Надеюсь, приведенные советы помогут вам исправить неполадки при отправке почты в WordPress, а также решить проблемы с работой плагина Contact Form.