方案:從數據庫中獲取電子郵件模板,並循環訪問收件人列表,爲每個收件人個性化電子郵件。PHP深克隆對象
我的電子郵件模板作爲嵌套對象返回。它看起來有點像這樣:
object(stdClass) {
["title"] => "Event Notification"
["sender"] => "[email protected]"
["content"] => object(stdClass) {
["salutation"] => "Dear %%firstname%%,"
["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
}
}
然後我遍歷收件人,通過這個$電子郵件對象的個性化()函數:
foreach($recipients as $recipient){
$email_body = personalise($email, $recipient);
//send_email();
}
的問題,當然,是我需要通過引用來傳遞$ email對象,以便替換個性化標籤 - 但是如果我這樣做,原始對象將被更改並且不再包含個性化標籤。
據我所知,克隆不會幫助我,因爲它只會創建一個淺拷貝:電子郵件對象中的內容對象不會被克隆。
我讀過關於使用反序列化(serialize($ obj))來解決這個問題 - 但是我讀過的所有內容都說這是一個很大的性能問題。
於是,兩人終於讓我的兩個問題:
- 是反序列化(連載($ OBJ))一個合理的解決方案嗎?
- 或者我正在處理這個錯誤?有沒有不同的方式可以讓我生成該電子郵件對象的個性化副本?
我發現swiftmailer在做裝飾插件(http://swiftmailer.org/docs/plugins.html#decorator-plugin)方面做得很好,再加上它在頭;我們得到了非常低的垃圾郵件結果。 – scott