带有 HTML 模板和发送变量的 PHP Mailer
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24869059/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP Mailer with HTML template and sending variables
提问by user3350885
Basically I'm trying to do this.
基本上我正在尝试这样做。
http://www.xeweb.net/2009/12/31/sending-emails-the-right-way-using-phpmailer-and-email-templates/
http://www.xeweb.net/2009/12/31/sending-emails-the-right-way-using-phpmailer-and-email-templates/
Here is my code
这是我的代码
index.php
索引.php
<?php
include('class.phpmailer.php'); // Retrieve the email template required
$message = file_get_contents('mail_templates/sample_mail.html');
$message = str_replace('%testusername%', $username, $message);
$message = str_replace('%testpassword%', $password, $message);
$mail = new PHPMailer(); $mail->IsSMTP(); // This is the SMTP mail server
$mail->SMTPSecure = 'tls';
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'mypassword';
$mail->SetFrom('[email protected]', 'Pricol Technologies');
$mail->AddAddress('[email protected]');
$mail->Subject = 'Your account information';
$mail->MsgHTML($message);
$mail->IsHTML(true);
$mail->CharSet="utf-8";
//$mail->AltBody(strip_tags($message));
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
?>
mail_templates/sample_mail.html
mail_templates/sample_mail.html
<html>
<body>
<h1>Account Details</h1>
<p>Thank you for registering on our site, your account details are as follows:<br>
Username: %username%<br>
Password: %password% </p>
</body>
</html>
I'm getting the mail as follows:
我收到的邮件如下:
Account Details
Thank you for registering on our site, your account details are as follows:
Username: %testusername%
Password: %testpassword%
Expected Output
预期产出
Account Details
Thank you for registering on our site, your account details are as follows:
Username: testusername
Password: testpassword
Where did I went wrong. I have checked some forum. But no use.
我哪里做错了。我检查了一些论坛。但是没有用。
I have previously asked some question. But my project requirement is to have the html template with % variable name % so that anyone could make changes in the html file without touching the code part.
我之前问过一些问题。但我的项目要求是使用 % 变量名 % 的 html 模板,以便任何人都可以在不触及代码部分的情况下更改 html 文件。
采纳答案by Marc B
Two of these things are not like the others...
其中两件事情与其他事情不同......
$message = str_replace('%testusername%', $username, $message);
$message = str_replace('%testpassword%', $password, $message);
^^^^---note "test"
<p>Thank you for registering on our site, your account details are as follows:<br>
Username: %username%<br>
Password: %password% </p>
^---note the LACK of "test"
Your script is working perfectly as is, and it's a PEBKAC issue...
您的脚本按原样完美运行,这是 PEBKAC 问题...