Как отправить PHPMailer, который получает шаблон электронной почты из базы данных и вставляет переменную в шаблон - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь получить шаблон электронной почты из моей базы данных в мое тело PHPMailer. Переменные $title и $name должны быть помещены в мой шаблон электронной почты, чтобы переменные отображались вместе с шаблоном. Есть ли какие-либо предложения сделать это?

Вот моя база данных шаблона: db Ниже приведен код PHP:

if(isset($_POST['issue']))
    {
        ...
        $username = $_POST['studentname'];
        $bookid = $_POST['bookdetails'];

        //perform multi query to retrieve data
        $sql= "SELECT option_value FROM settings WHERE option_name = 'email_temp_issue';";
        $sql .="SELECT title FROM books WHERE id = '$bookid';";
        $sql .="SELECT fullName from students WHERE email = '$username'";
        $sql_run = mysqli_multi_query($connection,$sql);

        if(mysqli_num_rows($sql_run)>0)
        {
            foreach ($sql_run as $row)
            {
                $email_template = $row['option_value']; //retrieve email template 
                $title = $row['title']; //variable to put in email template
                $name = $row['fullName']; //variable to put in email template 
            }
        }//NOT SURE IF I RETRIEVE IT RIGHT..

        $mail->Body = "$email_template"; //load template to email body



        if(!$mail->Send()) {
            echo "<script>alert('Error while sending Email.')</script>";
            var_dump($mail);
        }
        else {
            echo "<script>alert('Email sent successfully')</script>";
        }
}                     



1 Ответ

0 голосов
/ 30 марта 2020

Прежде всего ваш скрипт уязвим для SQL атаки с использованием инъекций , поэтому вам следует срочно смягчить это.

Для отправки в список из базы данных, базы Ваш код в примере списка рассылки, поставляемом с PHPMailer .

PHPMailer не заботится о том, как вы создаете свое тело сообщения, поэтому вы можете выполнять простые подстановки строк, используя ваши примеры:

$mail->Body = str_replace(['{name}', '{title}'], [$name, $title], $email_template);

или что-то более сложное, используя шаблонизатор, такой как Smarty или Twig, если это уместно.

...