将{username}替换为客户端的用户名

时间:2015-09-01 11:20:32

标签: php

在进行群发邮件时,如何用客户端的用户名替换{username}?我有以下代码,但它只为所有电子邮件提供第一个用户。

if(isset($_POST["sub"]))
{
    $server = mysqli_real_escape_string($conn, $_POST["srv"]);
    $subj = mysqli_real_escape_string($conn, $_POST["subj"]);
    $msg = mysqli_real_escape_string($conn, $_POST["msg"]);

    if($server == "all")
    {
        $query = mysqli_query($conn, "SELECT * FROM `testing`");
    }
    else
    {
        $query = mysqli_query($conn, "SELECT * FROM `testing` WHERE `srv` = '$srv'");
    }

    while($results = mysqli_fetch_assoc($query))
    {
        $subj = str_replace("{username}", $results["uname"], $subj);
        $msg = str_replace("{username}", $results["uname"], $msg);

        mail($results["mail"], $subj, $msg, $headers);
    }
}

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

因为你用第一个用户名替换了用户名占位符({username}),下次你尝试用第二个用户名替换用户名占位符时,$ subj字符串中不存在用户名占位符。

请改为:

while($results = mysqli_fetch_assoc($query))
{
    $userSubject = str_replace("{username}", $results["uname"], $subj);
    $userMessage= str_replace("{username}", $results["uname"], $msg); 
    mail($results["mail"], $userSubject, $userMessage, $headers);
}