Escenario: obtener una plantilla de correo electrónico de la base de datos y recorrer una lista de destinatarios, personalizando el correo electrónico para cada uno.Objeto PHP de clonación profunda
Mi plantilla de correo electrónico se devuelve como un objeto anidado. Puede parecer un poco como esto:
object(stdClass) {
["title"] => "Event Notification"
["sender"] => "[email protected]"
["content"] => object(stdClass) {
["salutation"] => "Dear %%firstname%%,"
["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
}
}
Entonces bucle a través de los receptores, pasando este objeto de correo electrónico $ a un Personalizar función():
foreach($recipients as $recipient){
$email_body = personalise($email, $recipient);
//send_email();
}
El problema, por supuesto, es que tengo necesita pasar el objeto $ email por referencia para poder reemplazar las etiquetas de personalización, pero si lo hago, el objeto original cambia y ya no contiene las etiquetas de personalización.
Según entiendo, el clon no me ayudará aquí, porque solo creará una copia superficial: el objeto de contenido dentro del objeto de correo electrónico no se clonará.
He leído sobre cómo solucionar esto con unserialize (serialize ($ obj)) - pero todo lo que he leído dice que esto es un gran golpe de rendimiento.
Así, dos finalmente llegar a mis dos preguntas:
- Es unserialize (serializar ($ obj)) una solución razonable aquí?
- ¿O estoy haciendo todo esto mal? ¿Hay alguna forma diferente de que I pueda generar copias personalizadas de ese objeto de correo electrónico?
Me parece que swiftmailer hace un gran trabajo al hacer lo que estás tratando de hacer con el plugin de decorador (http://swiftmailer.org/docs/plugins.html#decorator-plugin), además de que hace un buen trabajo con el encabezados; estamos obteniendo muy bajos resultados de spam con él. – scott