Разработка плагинов WordPress: переопределение SMTP по умолчанию

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

Информация о новом SMTP-сервере будет предоставлена ​​пользователем через форму на wp-admin

Погуглив об этом, я наткнулся PHPMailer, а также класса smtp.php

Возможные решения, которые я мог придумать
1. Создайте глобальный объект для класса phpmailer и используйте его через плагин
2. Переопределите настройки SMTP-сервера WordPress по умолчанию
3. Сохраните настройки, введенные пользователем, в базу данных и получите их при создании объекта PHPmailer, куда бы я ни отправлял почту.

Проблема, с которой я сталкиваюсь с вышеуказанными решениями ..

1-е решение. Я не могу понять, как этого добиться.
2-е решение: я не смог найти ни одного ресурса в WordPress Codex, который мог бы объяснить, как переопределить настройки SMTP по умолчанию.
Третье решение: недостаточно продуктивно.

Кроме того, я пытаюсь создать отдельный плагин, поэтому не могу создать зависимость от любого стороннего плагина. Хотя я попытался пройти через исходный код сор-SMTP, но не мог понять, как использовать одни и те же настройки в нескольких местах.

Я использую плагин WordPress Boilerplate Тома Макфарлина (ссылка на сайт), чтобы создать стандартную файловую структуру плагина, поэтому, если кто-то сможет объяснить мне решение с использованием шаблонного примера, это будет действительно полезно и эффективно.

редактирует:
Я загружаю файловую структуру для лучшего понимания.

введите описание изображения здесь

Это форма
введите описание изображения здесь

Значения формы успешно получены в class-atf-admin.php
введите описание изображения здесь

Мне нужно создать глобальную переменную в class-atf-admin.php, где я установлю значения, полученные из формы, и буду использовать их в файлах, показанных на рисунке выше.

3

Решение

Mkay, у меня будет трещина в варианте 1 (не 100% на именовании phpmailer, хотя)

В вашем основном файле плагина, на основе этот пример кода

<?php
require_once 'phpmailer/PHPMailerAutoload.php';

$mail             = new PHPMailer();

$body             = file_get_contents('contents.html');

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port       = 26;                    // set the SMTP port for the GMAIL server
$mail->Username   = "yourname@yourdomain"; // SMTP account username
$mail->Password   = "yourpassword";        // SMTP account password

$mail->SetFrom('name@yourdomain.com', 'First Last');

$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";

$mail->MsgHTML($body);

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}

Для переменных от конца пользователя добавьте вышеприведенное в короткий код и, возможно, вставьте детали smtp через короткий код. например

[sendMail host="mail.yourdomain.com" port="26" username="yourname@yourdomain" password="yourpassword"]

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector