Scenariusz: pobierz szablon wiadomości e-mail z bazy danych i zapętlić listę odbiorców, personalizując wiadomość e-mail dla każdej z nich.Obiekt PHP do klonowania głębokiego
Mój szablon e-mail jest zwracany jako obiekt zagnieżdżony. To może wyglądać trochę tak:
object(stdClass) {
["title"] => "Event Notification"
["sender"] => "[email protected]"
["content"] => object(stdClass) {
["salutation"] => "Dear %%firstname%%,"
["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
}
}
Potem pętla przez odbiorców, przekazując tę $ email obiektu do personalizacji() Funkcja:
foreach($recipients as $recipient){
$email_body = personalise($email, $recipient);
//send_email();
}
Problem, oczywiście, jest to, że musisz przekazać obiekt $ email przez odniesienie, aby zastąpił on znaczniki personalizacji - ale jeśli to zrobię, oryginalny obiekt zostanie zmieniony i nie będzie zawierał tagów personalizacji.
Jak rozumiem, klon nie pomoże mi tutaj, ponieważ utworzy tylko płytką kopię: obiekt zawartości wewnątrz obiektu wiadomości e-mail nie zostanie sklonowany.
Przeczytałem o tym, jak to obejść z niezidentyfikowaniem (serializacja ($ obj)) - ale wszystko, co przeczytałem, mówi, że jest to duży hit wydajnościowy.
Tak, dwa w końcu dostać się do moich dwóch pytań:
- Czy unserialize (serializacji ($ obj)) rozsądnym rozwiązaniem tutaj?
- Czy wszystko w porządku? Czy istnieje inny sposób, w jaki mogę generować spersonalizowane kopie tego obiektu poczty elektronicznej?
Uważam, że swiftmailer wykonuje świetną robotę, robiąc to, co próbujesz zrobić z wtyczką dekoratora (http://swiftmailer.org/docs/plugins.html#decorator-plugin), a także wykonuje dobrą robotę z nagłówki; otrzymujemy z tego bardzo niski wynik spamu. – scott