Infocurci - programmatore Php Roma
Infocurci - programmatore Php Roma
Questo sito non lascia nessun cookie sul vostro pc, consuma pochissimi kb, non profila nulla e non raccoglie dati personali. Siete i benvenuti.

Magento : Come inviare un'email da Magento?

Un utile snippet di codice che consente di inviare email da Magento. Potremo sfruttare cosi tutte le funzioni avanzate del Mailer, senza doverci preoccupare di configurazioni particolari. Il testo della mail può essere personalizzato dal pannello di amministrazione, cosi da rendere il più indipendenti possibili i nostri clienti.

Magento

Durante lo sviluppo di componenti personalizzati per Magento, accade spesso di avere tra le specifiche tecniche l'invio di email. Email di avviso all'amministratore del sito, email informative per i clienti, email di alert tecnici agli sviluppatori.. un sistema complesso come Magento non può prescindere dalla gestione avanzata della posta elettronica.

Ovviamente la piattaforma Magento offre già un avanzato mailer, per cui non dobbiamo far altro che interfacciarci con esso. Le prime versioni disponevano di un mailer più classico, mentre nelle nuove release il servizio è basato sui template. Una soluzione ottima perché permette ai titolari dei negozi di poter modificare i testi in qualsiasi momento.

La prima cosa da fare è quindi loggarsi nel pannello Magento e, dalla voce "System", selezionare "Transactional Emails". Aggiungiamo un nuovo template cliccando su "Add new template" in alto a destra.


A questo punto si apre una schermata divisa in due sezioni. In alto abbiamo la possibilità di scegliere di caricare un template pre-compilato, ad esempio scegliendo quello "Forgot Password" vedremo la schermata successiva arricchirsi di un testo con tutte le informazioni che vengono inviate ad un utente che cerca di recuperare la propria password. Questi template vengono caricati dalla cartella app/locale/LINGUA/template/email, ovviamente dal pannello possiamo sovrascrivere le traduzioni come vogliamo.


Visto che siamo qui per usare un'email che andremo ad inviare da un componente personalizzato, possiamo ricaricare la pagina (cosi da cancellare l'eventuale traduzione scelta per testare l'esempio) e scrivere nello spazio vuoto il testo della nostra email.
Come vedete ho usato anche una variabile, "{{tuoNome}}", il cui valore verrà creato dal nostro componente.


Salviamo l'email e prendiamo nota dell'id numerico associato (visibile nella prima colonna dell'elenco email, nel mio caso "1").


Nel codice del nostro componente (ad esempio nel controller), inseriamo lo snippet necessario per utilizzare il template appena creato:

    $sender = Array('name'  => 'Nome del mittente','email' => 'info@mittente.it');
    $email = 'info@destinatario.com';
    $templateId = 1;
    $vars = Array('tuoNome' => Mage::app()->getRequest()->getPost('nome'));
    $storeId = Mage::app()->getStore()->getId();

    Mage::getModel('core/email_template')->sendTransactional($templateId, $sender, $email, '', $vars, $storeId);

   
La prima variabile, $sender, contiene un array con nome ed email che apparirà come mittente del messaggio; in $email memorizziamo invece l'email del destinatario.
In $templateId dobbiamo inserire l'id numerico di cui abbiamo preso nota prima.
In $vars vanno messe invece le variabili che vengono usate dal template; avevamo inserito un "segnaposto" di nome $tuoNome, ora lo compiliamo (a scopo illustrativo ho ipotizzato che la variabile venga popolata da un valore inviato via post).
Dopo aver settato l'id dello store, richiamiamo il mailer passandogli i parametri appena illustrati.
Ovviamente potete dare un'occhiata al file /app/code/core/Mage/Core/Model/Email/Template.php per vedere le altre funzioni a disposizione.