我在循环中使用了一个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);
}
}
答案 0 :(得分:1)
您的$ {email}
中没有可以替换的message
字符串
答案 1 :(得分:1)
您的代码有效且完美无瑕。问题出在其他地方。
您可能想要检查的内容很少:
str_replace
区分大小写,您确定是{email}而不是{EMAIL}吗?
$ message是否包含有效消息?尝试将其打印出浏览器,打开它的源代码,这样你就可以看到浏览器解析的其他html标签并检查它是否正确
顺便说一下 - 您应该考虑使用mysql_fetch_assoc
代替mysql_fetch_array
。默认情况下,您使用的方法会将mysql_fetch_row
和mysql_fetch_assoc
创建的数组合并为一个,因此需要2倍的空间
答案 2 :(得分:0)
AHHHHH!掌上电脑!!这是一个完全不同的问题。在我的邮件标题中,我附上了消息,我在代码的错误位置调用str_replace。感谢所有回复人员:)