2011-09-05 87 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