Photo by Solen Feyissa on Unsplash
“Email has an ability many channels don’t: creating valuable, personal touches — at scale” ~ David Newman
Le email sono un modo straordinario per entrare in contatto con il tuo pubblico e, molte volte, sono la chiave per un'azienda per mettersi in contatto con i clienti. Le email sono personalizzate, sono colorate, sono potenti, sono professionali, a volte persino emozionanti. Ma... hai mai pensato se vengano lette?
Molte persone si affidano a servizi email gestiti che ti forniscono tutte le statistiche sulle tue email, ma spesso sono servizi a pagamento e, per costruire un piccolo servizio, il tuo budget potrebbe non essere all'altezza delle tue esigenze.
Quindi, in questo articolo, costruiremo un email tracker per il tuo progetto Laravel!
Installazione
Ho provato molti package e quello con cui mi trovo bene è jdavidbakr/mail-tracker.
“MailTracker will hook into all outgoing emails from Laravel and inject a tracking code into it. It will also store the rendered email in the database. There is also an interface to view sent emails.” ~ MailTracker
Per iniziare, basta:
composer require jdavidbakr/mail-tracker
E Laravel scoprirà il package:
Discovered Package: jdavidbakr/mail-tracker
Ora pubblica tutto ciò che riguarda il package
> php artisan vendor:publish --provider="jdavidbakr\MailTracker\MailTrackerServiceProvider"
Copied File [/vendor/jdavidbakr/mail-tracker/config/mail-tracker.php] To [/config/mail-tracker.php]
Copied Directory [/vendor/jdavidbakr/mail-tracker/src/views] To [/resources/views/vendor/emailTrakingViews]
Publishing complete.
Questo pubblicherà il file di configurazione e le view di default (ci arriveremo più avanti).
Il package ha bisogno di salvare dei dati nel database, quindi dovremmo eseguire le sue migration
> php artisan migrate
Migrating: 2016_03_01_193027_create_sent_emails_table
Migrated: 2016_03_01_193027_create_sent_emails_table (22.75ms)
Migrating: 2016_09_07_193027_create_sent_emails_Url_Clicked_table
Migrated: 2016_09_07_193027_create_sent_emails_Url_Clicked_table (40.97ms)
Migrating: 2016_11_10_213551_add-message-id-to-sent-emails-table
Migrated: 2016_11_10_213551_add-message-id-to-sent-emails-table (3.18ms)
Migrating: 2020_04_15_112152_add_message_id_index_to_sent_emails_table
Migrated: 2020_04_15_112152_add_message_id_index_to_sent_emails_table (6.74ms)
Migrating: 2021_02_10_083945_add_sender_email_and_name_to_sent_emails_table
Migrated: 2021_02_10_083945_add_sender_email_and_name_to_sent_emails_table (3.95ms)
Migrating: 2021_02_10_095634_add_first_open_and_first_click_columns
Migrated: 2021_02_10_095634_add_first_open_and_first_click_columns (4.72ms)
E per dimostrare che è terribilmente semplice... è pronto all'uso!
Il package registrerà le seguenti route
GET|HEAD email-manager ................. mailTracker_Index
GET|HEAD email-manager/clear-search .... mailTracker_ClearSearch
POST email-manager/search .......... mailTracker_Search
GET|HEAD email-manager/show-email/{id} . mailTracker_ShowEmail
GET|HEAD email-manager/smtp-detail/{id}. mailTracker_SmtpDetail
GET|HEAD email-manager/url-detail/{id} . mailTracker_UrlDetail
GET|HEAD email/l/{url}/{hash} .......... mailTracker_l
GET|HEAD email/n ....................... mailTracker_n
POST email/sns ..................... mailTracker_SNS
GET|HEAD email/t/{hash} ................ mailTracker_t
Per accedere al manager dovresti registrare un gate chiamato see-sent-emails. A scopo di test, ho semplicemente permesso l'accesso a tutti in AuthServiceProvider :
Gate::define('see-sent-emails', function ($user) {
return true;
});
Ovviamente ci metteresti qualche regola personalizzata come return $user->is_admin; o qualcosa del genere.
E poi visitando /email-manager lo otterrai
Mail tracker
Hello World
La cosa più semplice da fare è configurare da qualche parte una view che dica semplicemente "Hello world".
Mail::send('mails.test', [], function ($mail) {
$mail->to('[email protected]')->subject('Does this work?');
});
Al momento sto usando Mailhog, quindi ho visto arrivare l'email
Mailhog
E aggiornando il tracker, vedrai l'email con 0 aperture e 0 click
Mail tracker
Ora, tornando su mailhog, aprendo l'email e aggiornando il tracker, otterrai questo
They’ve seen the email!
L'utente ha visto l'email, tu vedi quando ha visto l'email per la prima volta e, se c'era qualcosa di cliccabile, come una call to action, vedrai quando l'utente ha raggiunto quella call to action.
Ma... come?
Diamo un'occhiata al source dell'email
Hello World <img border="0" width="1" alt="" height="1" src="http://localhost:8080/email/t/45v3asPZjz7NzYPxY1NYNNBnoLvGH2gX">
Il blade conteneva solo un "Hello World", il tag img ha fatto la magia perché le immagini vengono praticamente sempre caricate nelle email (se non vengono considerate spam e bloccate in anticipo).
E se raggiungi quell'URL vedrai un'immagine da 1x1px:
The magic image
Noteresti un pixel morto nelle tue email?
Quindi... hanno letto le tue email?
Le email sono davvero potenti. Quando ricevo una bella email, costruita per me, con i contenuti che mi piace ricevere, ci passo dei minuti perché penso che ne valga la pena, anche se dietro c'è un algoritmo, quindi se stai costruendo le tue email manualmente, in modo programmatico o in qualsiasi altro modo, assicurati che ne valgano la pena!
Ora sta a te costruire qualcosa di grandioso! 🥂
Resta sintonizzato per altre Strategie Data-Driven e, se vuoi, prenditi un momento ️️per lasciare un commento su come prendi decisioni data-driven supportate dagli strumenti! ☕️