2014-10-01 61 views
1

我有以下設置:PHPMailer的str_replace函數多次

 $message = file_get_contents('./site/resources/external/template.html'); 
    $message = str_replace('[name]', $email['name'], $message); 
    $message = str_replace('[password]', $password, $message); 

    require './site/resources/external/PHPMailer/PHPMailerAutoload.php'; 
    $mail = new PHPMailer(); 
    $mail->SMTPSecure = 'tls'; 
    $mail->Username = "mymail"; 
    $mail->Password = "mypassword"; 
    $mail->AddAddress($email); 
    $mail->FromName = "Marc"; 
    $mail->CharSet = 'UTF-8'; 
    $mail->Subject = "Din nye adgangskode"; 
    $mail->msgHTML($message, dirname(__FILE__)); 
    $mail->Host = "smtp.live.com"; 
    $mail->Port = 587; 
    $mail->IsSMTP(); 
    $mail->SMTPAuth = true; 
    $mail->From = $mail->Username; 
    $mail->Send(); 

但是當我嘗試發送,不發送。

然而,當我這樣做:

然而,當我做到以下幾點:

$mail->msgHTML(str_replace('[password]', $password, file_get_contents('./site/resources/external/template.html')), dirname(__FILE__)); 

發送沒有問題。

那麼如何添加多個變量到我的模板?

+0

「它不發送」不是一個有用的描述。究竟什麼是失敗?你看到什麼錯誤?您可以嘗試使用模板引擎,如Smarty或Twig。 – Synchro 2014-10-01 09:48:06

回答

1

雖然我沒有看到$message變量替換怎麼可能會破壞你的代碼,有一個str_replace使用數組參數多替換形式:

$mail->msgHTML( 
    str_replace( 
    array('[password]','[name]'), 
    array($password, $email['name']), 
    file_get_contents('./site/resources/external/template.html') 
), 
    dirname(__FILE__) 
); 

我懷疑別的東西是錯的代碼,但這可能會有用。

+0

這工作謝謝隊友 – 2014-10-01 09:59:42