Qual è l'approccio migliore per i modelli di posta PHP

1

Sto lavorando su un webshop (usato per un solo prodotto, espandendolo a più prodotti e più negozi collegati a un backoffice, non posso usare PrestaShop per compatibilità).
Inviamo 3 tipi di email, tutte piene di determinati dati.

In primo luogo, inviamo una notifica di ordine quando qualcuno ordina e paga (questo è il momento in cui lo vediamo nell'elenco degli ordini da elaborare), questo contiene i dettagli dell'ordine compreso l'elenco completo dei prodotti e dei prezzi.

Quindi inviamo un'altra email una volta che spediamo l'ordine, questo include praticamente la stessa della notifica dell'ordine (tranne alcuni dettagli che non contiene e alcuni extra).

Riceviamo anche un'email quando le persone utilizzano il modulo di contatto che utilizza lo stesso stile.

In questo momento ciò che accade è che il sistema afferra tutti gli elementi nell'ordine e crea una stringa contenente la tabella con gli elementi. Funziona bene, ma è sciatto. Ho anche copiato e incollato lo script di posta elettronica completo (usando PHPMailer) in 7 punti diversi in cui è possibile che venga inviata un'email.

Ho bisogno di un modo migliore per farlo. Stavo pensando di scrivere un wrapper per PHPMailer che fa automaticamente la maggior parte delle cose, e forse include alcune funzioni di supporto per fare cose come la tabella degli articoli, ma non sono sicuro di come fare al meglio su questo. Smarty e altri motori di modelli sembrano troppo ingombranti per questo.

C'è un modo "perfetto" per farlo?

    
posta Ieuan 12.02.2015 - 16:34
fonte

2 risposte

4

Non esiste un unico approccio esplicito per la creazione di modelli di posta "perfetti", poiché tutto dipende dalla complessità dei modelli e dalla scalabilità che si desidera raggiungere.

Attraverso la mia esperienza, ho lavorato con approcci diversi e tutti sono stati utili per le esigenze specifiche del progetto. È una questione di gusti e abilità personali, bisogna trovare il saggio equilibrio tra la complessità dei modelli stessi e la facilità di implementazione, per non strafare la cosa.

Criteri, quando si sceglie approccio / strumenti:

  • La complessità del modello :
    • può essere risolto con segnaposti semplici ,
    • o conterrà iteratori, ulteriore logica condizionale ;
  • Frequenza di modifica :
    • dinamico (recuperato da DB, generato sul volo, cambiato frequentemente tramite back-end, ecc.)
    • static
    • temi supporto (può essere contato come sottotipo di dinamico )
  • Risorse computazionali :
    • quantità di email inviate per un determinato periodo di tempo: email di massa, e-mail esclusive;
    • memoria / consumo della CPU dal tuo script;
    • meccanismi di memorizzazione nella cache e altre ottimizzazioni;
  • Strumenti / librerie già coinvolte nel progetto :
    • utilizza strumenti di template integrati dalla libreria email esistente;
    • strumenti framework;
    • motore di template utilizzato per l'interfaccia utente;
  • Ulteriore manutenzione / supporto / scalabilità della soluzione in una prospettiva a lungo termine.

Due soluzioni:

1. Il modo semplice :

2. Il modo avanzato :

  • Motori modello PHP : TWIG modello di motore (scelta eccellente per Symfony, Laravel, OctoberCMS, ecc.), < a href="http://www.smarty.net/"> SMARTY motore di template (o qualsiasi altro motore di template: dwoo, Moustache, Volt, ecc.)
  • strumenti integrati per PHP Framework o CMS ;
  • librerie email specializzate ( PHPMailer , SwiftMailer , Pera, ecc.);
  • API esterne e servizi esterni ( MailChimp , ActiveCampaign , SendGrid , ecc.

Tutto ciò che ho detto è la mia esperienza e opinione personale.

    
risposta data 17.05.2016 - 19:29
fonte
-2

Questo è esattamente ciò che ho fatto con progetti simili, ho creato una funzione wrapper su phpmailer.

Ho quindi un file modello email, ad esempio:

<html>
<body>
<h1>{SUBJECT}</h1>
{BODY}
</body>
</html>

Ho quindi una funzione che chiamo con i dati rilevanti che carica i modelli e sostituisce il testo.

    
risposta data 17.05.2016 - 18:10
fonte

Leggi altre domande sui tag