Предположим, у нас есть пустой сайт WP, и мы хотим программно настроить параметры SMTP в нашем плагине или теме. Какой самый простой способ сделать это без изменения основных файлов?
18
Прежде всего, если мы посмотрим на реализацию wp_mail
функции, мы увидим, что эта функция использует PHPMailer
класс для отправки электронных писем. Также мы можем заметить, что есть жестко закодированный вызов функции $phpmailer->IsMail();
, который устанавливает использование mail()
функции PHP . Это означает, что мы не можем использовать настройки SMTP с ним. Нам нужно вызвать isSMTP
функцию PHPMailer
класса. А также нам нужно установить наши настройки SMTP.
Для этого нам нужно получить доступ к $phpmailer
переменной. И вот мы приходим к phpmailer_init
действию, которое вызывается перед отправкой электронного письма. Таким образом, мы можем сделать то, что нам нужно, написав наш обработчик действий:
add_action( 'phpmailer_init', 'wpse8170_phpmailer_init' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
$phpmailer->Host = 'your.smtp.server.here';
$phpmailer->Port = 25; // could be different
$phpmailer->Username = 'your_username@example.com'; // if required
$phpmailer->Password = 'yourpassword'; // if required
$phpmailer->SMTPAuth = true; // if required
// $phpmailer->SMTPSecure = 'ssl'; // enable if required, 'tls' is another possible value
$phpmailer->IsSMTP();
}
И это все.
wp_mail
функцию.Дополнение к @EugeneManuilov ответа.
Настройки SMTP
По умолчанию их можно получить - как уже ответил @EugeneManuilov - во время обратного вызова, прикрепленного к
do_action_ref_array()
. Источник / ядро .Исключения SMTP
По умолчанию WordPress не дает никаких результатов отладки. Вместо этого он просто возвращает,
FALSE
если произошла ошибка. Вот небольшой плагин, чтобы исправить это:вместилище
Оба плагина доступны в этом Gist на GitHub , поэтому рассмотрите возможность проверить эти плагины, чтобы получить какие-либо обновления.
источник
Другие ответы на этот пост, хотя и предоставляют работающее решение, не решают проблему безопасности хранения ваших учетных данных SMTP в файле плагина или functions.php. В некоторых случаях это может быть нормально, но лучшие практики требуют более безопасного хранения этой информации. На самом деле нет веских причин не следовать рекомендациям, когда дело касается защиты ваших учетных данных.
Некоторые предлагают сохранить его в БД в качестве опции, но также предоставляют те же проблемы безопасности в зависимости от количества административных пользователей на вашем сайте и того, должны ли эти пользователи видеть эти учетные данные для входа. Это также та же причина, чтобы не использовать плагин для этого.
Лучший способ сделать это - определить константы для информации phpmailer в вашем файле wp-config.php. На самом деле это обсуждалось как функция в Почтовом Компоненте , но в настоящее время не принято в качестве фактического усовершенствования. Но вы можете сделать это самостоятельно, добавив следующее в wp-config.php:
Как только они определены в wp-config.php, их можно использовать где угодно с помощью определенной константы. Таким образом, вы можете использовать их в файле плагина или в вашем functions.php. (Определенный для OP, используйте файл плагина.)
В этом посте есть немного больше подробностей, а на github - суть .
источник
.env
этого используйте gitignored файл. Но никто, кто вкладывает что-то чувствительное, вwp-config.php
любом случае не использует контроль версий ...