php str_replace用于带有邮件功能的循环中

时间:2011-09-05 14:38:09

标签: php mysql email

我在循环中使用了一个html电子邮件消息,然后在循环中尝试使用str_replace将自定义值插入到挂钩中。所以在下面的例子中我有一个{email}钩子,我试图用收件人的电子邮件地址替换它。我的问题是,当我向浏览器输出$message_final时,str_replace函数似乎完成了这项工作。但是,当我发送电子邮件时,所有电子邮件仍然留有{email}挂钩,而str_replace似乎无效。我在这里缺少什么想法?感谢。

$message = "HTML email message here";

while ($r = mysql_fetch_array($emails_list)) {
    $email =  $r["email"];
    $message_final = "";

    if(!empty($email)) {
        //Replace hook with something new like an email address
        $message_final = str_replace('{email}', $email, $message);
        mail($email, $subject, $message_final, $headers); 
    }
}

3 个答案:

答案 0 :(得分:1)

您的$ {email}中没有可以替换的message字符串

答案 1 :(得分:1)

您的代码有效且完美无瑕。问题出在其他地方。

您可能想要检查的内容很少:

  • str_replace区分大小写,您确定是{email}而不是{EMAIL}吗?

  • $ message是否包含有效消息?尝试将其打印出浏览器,打开它的源代码,这样你就可以看到浏览器解析的其他html标签并检查它是否正确

顺便说一下 - 您应该考虑使用mysql_fetch_assoc代替mysql_fetch_array。默认情况下,您使用的方法会将mysql_fetch_rowmysql_fetch_assoc创建的数组合并为一个,因此需要2倍的空间

答案 2 :(得分:0)

AHHHHH!掌上电脑!!这是一个完全不同的问题。在我的邮件标题中,我附上了消息,我在代码的错误位置调用str_replace。感谢所有回复人员:)