2011-09-05 88 views
1

我有一个HTML电子邮件分配给一个变量,然后在循环中,我尝试使用str_replace插入自定义值到钩子。因此,在下面的示例中,我有一个{email}挂钩,我试图用接收者的电子邮件地址替换。我的问题是,当我输出$message_final到浏览器str_replace功能似乎已经完成了这项工作。但是,当我发送电子邮件时,所有电子邮件仍留有{email}挂钩,看起来str_replace未起作用。任何想法,我在这里失踪?谢谢。PHP 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

你能发表一部分实际的'$消息'包含挂钩? –

+0

嗯..你在这里发布的代码看起来很好..你可以发布你的'真实'代码(包括你在浏览器中用来查看消息的工作'var_dump()')吗? – Rijk

回答

0

Ahhhhh! Palm to face !!这是完全不同的问题。在我的邮件头中,我附加了这条消息,并且我在代码的错误位置调用了str_replace。感谢所有你的回复家伙:)

1

你必须在你的$ message没有{email}字符串,可以替代

+0

HTML字符串太长而不能在这里发布,但它在变量$ message – melon

+1

中我很确定OP的实际'$ message'具有它们。 –

+0

@melon:@EvanMulawski:向我们展示您的真实代码' – genesis

1

你的代码是有效的和完美的作品。问题在于别的地方。

有你可能想看看几件事情:

  • str_replace是大小写敏感的,你确定这是{}电子邮件,而不是{EMAIL}?

  • does $ message contains valid message?尝试打印出来的浏览器,打开它的源代码,所以你可以看到浏览器解析的附加HTML标签和检查它是否是正确的

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

+0

感谢您的额外提示:) – melon