2016-12-02 3 views
1

Ich verwende den folgenden Code, um eine E-Mail über (PHPMailer) zu senden.Variablen an PHPMailer übergeben get_file_contents

Das Skript ruft Datei Inhalt von welcome.php (E-Mail-Vorlage), wie kann ich Variablen an die Vorlage übergeben? So kann ich die E-Mail-Vorlage anpassen.

// SEND EMAIL NOTIFICATION TO USER 
$mail = new PHPMailer(); 

$body = file_get_contents('emails/templates/carer/welcome.php'); 
$body = eregi_replace("[\]",'',$body); 

$mail->AddReplyTo("[email protected]","CareMatch"); 

$mail->SetFrom('[email protected]', 'Carematch'); 

$address = $_POST['email']; 
$name  = $_POST['firstname'] . $_POST['lastname']; 

$mail->AddAddress($address, $name); 

$mail->Subject = "Welcome to CareMatch"; 

$mail->AltBody = "We have assigned you a unique ID and generated you a password."; // optional, comment out and test 

$mail->MsgHTML($body); 

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

Statt 'file_get_contents()', sondern eine Funktion aufrufen, die die Vorlage für Tags analysiert und ersetzt die Tags mit dem gewünschten Inhalt. – Dragos

Antwort

1

eine Möglichkeit, Sie tun können, ist, könnten Sie Platzhalter in Ihrem welcome.php hinzufügen und diese Platzhalter mit aktuellen Werten ersetzen, wenn Sie die Inhalte zu erhalten, mit str_replace() Funktion, wie:

... 
$searchArr = ["YOUR-PLACEHOLDER-FIRST", "YOUR-PLACEHOLDER-SECOND"]; 
$replaceArr = [$yourFirstVariable, $yourSecondVariable] 

$body = file_get_contents('emails/templates/carer/welcome.php'); 
$body = str_replace($searchArr, $replaceArr, $body); 
... 

Die palceholders YOUR-PLACEHOLDER-FIRST und YOUR-PLACEHOLDER-SECOND sind welcome.php Datei verwenden Hier ist eine Funktion, die ich

+0

Humm, es basiert auf Template-Frameworks-Strukturen? –

1

hinzugefügt werden oft, um mir PHP-Vorlagen zu geben, die PHPs-Ausgabepuffer verwenden, um die gerenderte Vorlage zu erfassen.

Es bietet viel mehr Flexibilität im Vergleich zu einem statischen Array von Platzhaltern mit jeder Art von Suchen und Ersetzen Ansatz.

function loadTemplate($template, array $properties = array()){ 
    $output = ""; 

    if (file_exists($template)) { 
     extract($properties); 

     ob_start(); 

     require($template); 

     $output = ob_get_contents(); 

     ob_end_clean(); 
    } 

    return $output; 
} 

$data = [ 
    "foo" => "bar" 
]; 

$message = loadTemplate("/path/to/email.phtml", $data); // <p>bar</p> 

email.phtml

<p><?php echo $foo; ?></p> 
Verwandte Themen