2015-12-18 2 views
0

Я пытаюсь передать массивы, поступающие из базы данных, и зацикливать их в шаблоне электронной почты, используя phpMailer. Используя следующий сценарий, я могу передать отдельные переменные и напечатать их в шаблоне:
PhpMailer: как передать массив из phpmailer в шаблон

$message = file_get_contents('template.php'); 
$message = str_replace('%lname%', $lname, $message); 

// Setup PHPMailer 
    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 

    $mail->SetFrom('[email protected]','mywebsite.com'); 
    $mail->AddAddress('[email protected]'); 


    $mail->Subject = 'New message'; 
    $mail->MsgHTML($message); 

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

Теперь я хотел бы передать массивы, поступающие из базы данных для соответствующего шаблона.

Как я могу их пропустить?

ответ

0

Вы можете просто повторить этот процесс для как можно большего количества тегов, но обратите внимание, что есть несколько вариантов замены & на PHP, например str_replace, которые принимают массивы, поэтому вы можете делать много сразу.

Если вы хотите усложнить работу, вы можете использовать движок шаблонов, например Smarty или Twig.

В целом это не имеет ничего общего с PHPMailer - он просто отправит все, что вы создадите, это совершенно отдельная вещь.

1

Вы можете использовать простой визуализации функцию

function render($template, $data) 
{ 
    extract($data); 
    ob_start(); 
    include($template ); 
    $content = ob_get_contents(); 
    ob_end_clean(); 
    return $content; 
} 

$body = render(__DIR__.'/template.php' , ['first' => 'This is first line' , 'second' => 'this is second line']); 

template.php

<table> 
<tr> 
    <td><?=$first ?></td> 
</tr> 
<tr> 
    <td><?=$second ?></td> 
</tr> 

Затем отправить сообщение

 $mail = new PHPMailer; 
     $mail->CharSet = "UTF-8"; 
     $mail->setFrom($from, 'Mailer'); 
     $mail->addAddress($to); 
     $mail->isHTML(true); 

     $mail->Subject = $subject; 
     $mail->Body = $body; 

     $mail->send();