使用php通过电子邮件生成带动态值的html

时间:2013-01-24 13:41:13

标签: php html mysql

我有一个格式简单的证书。证书需要填充数据库中的值并通过电子邮件发送。以下是我做的快速修复。问题是发送的证书不是一个人而是查询的那些。

$query ="SELECT  r.email, r.LastName, r.OpNo, 
r.QuizNo From tbl_cert where Pass =1 AND Printed is null;
$result=mysql_query($query);
while( ($row= mysql_fetch_array($result)) ){
            $subject = "CPD Certificate";
    $email = $row['email'];
    $LastName = $row['LastName'];
    $OpNo = $row['OpNo'];
    $TestNo = $row['QuizNo'];

            $headers  = "From: online@example.com";
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; 
              charset=iso-8859-1' . "\r\n";

            $mail_body ='<html>...Here its were my my 
            html comes with values from table...</html>';

            if (mail($to, $subject, $mail_body, $headers)){
            $query = "UPDATE `tbl_cert` SET Printed = 1 
               WHERE CertificateNo = "  . $CertificateNo;

            $certresult=mysql_query($query);

            if ($certresult) {

        header('Location:tsCertlist.php');
        }

问题是如何让$ mail_body在while循环中同时拥有html和php。我生成的表单或证书对于已通过且未打印证书的4位用户是相同的。

2 个答案:

答案 0 :(得分:2)

创建一个单独的模板文件,其中包含您的HTML以及要插入变量的位置/替换像%REPLACE_FIRSTNAME%

这样的内容

然后使用str_replace()用db / input /所有变量和你需要的数据来更改你的替换变量。

$mail_body = file_get_contents("templates/emailtemplate.htm");
$mail_body = str_replace("%REPLACE_FIRSTNAME%",value_from_DB,$template);

已排序,如果您想更改布局,只需相应地编辑模板文件。

答案 1 :(得分:0)

$certNo = 0;
//get $certNo from data base
$mail_body ='<html>'.$certNo.'</html>';
//send