Как можно настроить PHPMailer для заполнения свойств $mail->From и $mail->addAddress данными из базы данных? В текущем коде они остаются пустыми, хотя если их заполнить вручную, все работает. Вот участок старого кода, где данные берутся из базы данных. Как соединить эти два блока кода?
Для отправки сообщений через SMTP с помощью PHPMailer, необходимо задать параметры для подключения к серверу SMTP. Например, можно сделать следующим образом:
```php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
// Создаем новый объект PHPMailer
$mail = new PHPMailer();
// Настройки SMTP сервера
$mail->IsSMTP();
$mail->Host = 'smtp.example.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'your_username';
$mail->Password = 'your_password';
// От кого и кому отправляем сообщение
$mail->From = 'your_email@example.com';
$mail->addAddress('recipient@example.com', 'Recipient Name');
// Создаем соединение с базой данных
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
// Получаем данные из базы данных
$query = "SELECT email, name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
// Устанавливаем данные для отправителя и получателя из базы данных
$mail->From = $row['email'];
$mail->addAddress($row['email'], $row['name']);
// Отправляем сообщение
$mail->Subject = 'Тема сообщения';
$mail->Body = 'Содержание сообщения';
if($mail->send()) {
echo 'Сообщение успешно отправлено';
} else {
echo 'Ошибка: ' . $mail->ErrorInfo;
}
```
В этом примере мы подключаем PHPMailer, настраиваем SMTP сервер, создаем соединение с базой данных, получаем данные из базы данных и заполняем свойства $mail->From и $mail->addAddress данными из базы данных. В конце отправляем сообщение.
Обратите внимание, что перед использованием этого кода необходимо установить PHPMailer через Composer и настроить параметры подключения к SMTP серверу.
Вместо <code>mysqli_query()</code> лучше используйте <a href="https://www.php.net/manual/ru/book.pdo.php" rel="nofollow">PDO</a> ( <a href="https://phpfaq.ru/pdo" rel="nofollow">примеры</a> ) <br/> <br/> По проблеме. Не совсем понятно, что вы хотите добавить для PHPMailer, в From и addAddress у вас пустые строки. <br/> Если я правильно понял, то примерно так: <br/> <br/> <pre><code class="php">require 'PHPMailerAutoload.php';
$id = intval($_REQUEST['id']);
if (isset($id)) {
$r = mysqli_query($link,"SELECT * FROM book WHERE id='".$id."'");
$rr = mysqli_fetch_array($r);
// замените на ваши поля
$recipient = $rr['recipient'];
$sender = $rr['sender'];
$mail = new PHPMailer;
$mail->isSMTP();// Настройте почтовую программу на использование SMTP
$mail->Host = 'ssl://mail.host'; // Укажите SMTP-сервер
$mail->Port = 465;
$mail->SMTPAuth = true; // Включить аутентификацию SMTP
$mail->Username = '******'; // SMTP username
$mail->Password = '*******'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Включить шифрование, «ssl»
$mail->CharSet = 'UTF-8';
$mail->From = $sender;
$mail->addAddress($recipient); // Добавить получателя
$mail->Subject = 'Вот тема';
$mail->Body = 'Это текст сообщения HTML <b>выделен жирным шрифтом!</b>';
if(!$mail->send()) {
echo 'Сообщение не может быть отправлено.';
echo 'Ошибка почтовой программы: ' . $mail->ErrorInfo;
} else {
echo 'Сообщение отправлено';
}
}</code></pre>