Tracking delle email

Ciao, scrivo per porvi un problema che sto cercando di risolvere, ma
vorrei anche pareri esterni per capire quanto sia fattibile la cosa.
Ho realizzato un middleware (scritto in rails) per l’invio delle mail da
diverse app. Il middleware si preoccupa di inserire nelle mail anche
un’immagine per tracciare le aperture e le call to actions. Ora
ovviamente questa immagine tiene conto del destinatario per riconciliare
le informazioni. La mia domanda è: come posso fare ad aggiungere dei cc
e bcc e tracciare questi separatamente dal destinatario?

Grazie

Hai valutato l’opportunità di affidarti ad un servizio tipo mailgun? Se
no,
perché?

i

Il giorno 13 febbraio 2015 12:27, Massimo M. [email protected] ha
scritto:

Io infatti uso mandrill, ho cercato se qualcuno si era fatto un
middleware per gestire la cosa in-house.

Ma non ero molto soddisfatto con quello che ho trovato in giro.

Simone D’Amico

On Fri, Feb 13, 2015 at 3:26 PM, Iwan B. [email protected]

La mia situazione è decisamente complicata. Se siete curiosi vi spiego
il motivo per cui ho creato il middleware in casa, ma da quello che ho
letto mandrill, mailgun, postageapp ecc… gestiscono il cc come invii
separati per evitare appunto l’overlapping delle statistiche (che poi
sarebbe la mia soluzione di fallback)

Infatti immaginavo. Magari c’era qualche sistema (ad esempio un
interceptor) che mi avrebbe permesso di capire a chi sarebbe giunta la
mail, oppure qualche workaround…

Mi sa che non lo puoi fare, se non facendo anche tu degli invii
separati. Al momento dell’apertura dell’email il client di posta non
credo ti mandi nessuna variabile con cui poter capire chi dei
destinatari sta aprendo l’email. Tutto quello che ti arriva è una URL,
quella dell’immagine appunto, che è uguale per tutti se mandi una sola
email. Penso sia questa la ragione per cui mandrill fa quello che hai
descritto.

2015-02-13 15:35 GMT+01:00 Massimo M. [email protected]:

Fabrizio R. wrote in post #1168081:

Mi sa che non lo puoi fare, se non facendo anche tu degli invii
separati. Al momento dell’apertura dell’email il client di posta non
credo ti mandi nessuna variabile con cui poter capire chi dei
destinatari sta aprendo l’email. Tutto quello che ti arriva è una URL,
quella dell’immagine appunto, che è uguale per tutti se mandi una sola
email. Penso sia questa la ragione per cui mandrill fa quello che hai
descritto.

2015-02-13 15:35 GMT+01:00 Massimo M. [email protected]:

penso che Fabrizio abbia ragione.

Ciao Massimo,
Io lavoro per Litmus, noi offriamo un servizio del genere.
Il prodotto in grado di fornirti dati sui singoli forwards e prints.
http://cl.ly/image/3F0U2g191u1Q

https://litmus.com/email-analytics

Ciao,
Luca

Fabrizio,
Non ne ho idea :slight_smile:
L’altro team si occupa di analytics, noi consumiamo una API interna che
ci fornisce i dati.

Luca

Ciao Luca,
senza svelare segreti industriali, ci puoi dire come funziona Come fa
Litmus a ricevere degli eventi che si verificano su un client, tipo
“Printed”?

2015-02-16 9:25 GMT+01:00 Luca G. [email protected]:

Litmus ha una FAQ in merito (
https://litmus.com/help/analytics/ea-activity-tracking/)

“Litmus will only track the action (button clicked) in the email
client,
we are unable to track who the subscriber forwarded to specifically”

Dal screenshot di Luca G. noto però che il client è Apple Mail che è
uno
dei pochi che supporta il media print (
https://www.campaignmonitor.com/blog/post/3232/how-do-i-create-a-printer-friendly-email-newsletter/):
forse oltre al click sfrutta tale funzionalità per un tracking code ad
hoc.
mostrato solo in fase di stampa; in tal caso non sarebbe una particolare
novità in generale (per le pagine web si fa da un po’, vedi ad esempio
http://www.labnol.org/internet/track-print-web-pages/21021/) ma la
genialata è stato implementarlo per le email.
La mia deduzione forse è confermata anche dai limiti confermati di
Litmus (
https://litmus.com/help/analytics/limitations/).

In ogni caso chapeau a Litmus per il loro servizio (che ho potuto usare
con
molta soddisfazione riguardo il test delle email) e per la loro
documentazione!

Matteo

Card: http://matteopiotto.com

Soc. Coop. weLaika - http://dev.welaika.com

Ok per il forwards e prints, ma se io invio a [email protected]
mailto:[email protected] e in cc a [email protected]
mailto:[email protected] voi tracciate le aperture di indirizzo1 e
indirizzo2 separatamente, o sono cumulate su indirizzo1? E se le
tracciare separatamente Rimane effettivamente un invio singolo con
lheader per il cc, o fate due invii distinti rimuovendo il cc?

Grazie

@Massimo
Sono interessato a mettere in piedi qualcosa del genere, hai qualche
dritta da darmi?
Per il tuo problema: se ti riferisci all’interceptor di rails non serve
a niente in questo caso.
Per capire chi sta leggendo l’email credo serva l’indirizzo del singolo
ma non saprei come recuperarlo. Però dovresti riuscire a sapere quando
tutti hanno letto o sbaglio?

Il giorno 19/feb/2015, alle ore 11:24, Marco M.
[email protected] ha scritto:

@Massimo
Sono interessato a mettere in piedi qualcosa del genere, hai qualche
dritta da darmi?

Ciao, allora ti spiego i punti salienti del mio middleware:

  1. Ho creato in interceptor che permette di scegliere dinamicamente un
    server SMTP da usare. In questo modo posso creare N configurazioni SMTP
    e scegliere a run time quale usare. Cos se ci dovesse essere un down del
    server SMTP attuale, posso switchare al volo. Il prossimo passo sar la
    possibilit di bilanciare i serve, ad esempio con round robin.

  2. La gestione di accessi via api. In questo modo puoi controllare con
    esattezza quello che faranno i client.

  3. Creazione di template (magari usando il framework ink
    http://zurb.com/ink/ http://zurb.com/ink/)

  4. La possibilit di creare quelli che io ho chiamato hook. In sostanza
    si tratta di oggetti che rappresentano le mail da inviare con il
    supporto multi lingua. Questi non sono altro che dei contenuti che vanno
    a sostituire i placeholder nei template.
    Ad esempio se il template prevede un titolo un testo e una firma, lhook
    avr tre campi testuali che sono appunto titolo, testo e firma.
    Gli hook a loro volta possono contenere dei placeholder che verranno
    sostituiti utilizzando le variabili che arrivano tramite le richieste
    api

  5. La possibilit di creare call to actions personalizzate che possono
    essere inserite tramite placeholder negli hook

  6. Test delle mail per capire quanto probabile che finiscano nello spam
    (A tal proposito ho scritto un piccolo servizio sinatra che usa
    SpamAssassin per la verifica https://github.com/maintux/spam_check
    https://github.com/maintux/spam_check)

  7. Tutta la gestione delle statistiche aperture e click sulle cta (nel
    mio caso ho anche implementato la geo localizzazione degli ip)

  8. La gestione degli invii fatta con sidekiq e gestisce il retry solo
    se lerrore un errore di rete per evitare di spammare i clienti se ci
    sono errori a valle dellinvio ma prima della termine del job che di
    fatto causano un successivo invio.

  9. Gemma Ruby e plugin PHP per wrappare le chiamate API al Middleware

Questo un esempio che ti fa capire come avviene una chiamata per linvio
di una mail:

request = MailMiddleware::Request.new(:send_message, {
recipients: [‘[email protected]’,‘[email protected]’],
sender: ‘[email protected]’,
locale: ‘en’,
hook: ‘hook:1’,
reply_to: ‘[email protected]’,
variables: {
account_name: ‘John’,
account_surname: Doe’
},
attachments: {
“document.pdf” => ‘/Users/maintux/file.pdf’,
“archive.zip” => {
content_type: “application/zip”,
content: Base64.encode64(File.open(’/Users/maintux/file.zip’,
‘rb’).read)
}
}
})
response = request.send

response.fail?
response.ok?

Spero di essere stato esaustivo :stuck_out_tongue:

Per il tuo problema: se ti riferisci all’interceptor di rails non serve
a niente in questo caso.
Per capire chi sta leggendo l’email credo serva l’indirizzo del singolo
ma non saprei come recuperarlo. Per dovresti riuscire a sapere quando
tutti hanno letto o sbaglio?

Io al momento (se non splitto i cc in invii singoli) posso solo sapere
se la mail stata aperta o meno, ma non posso sapere con esattezza da
chi. Perci se o un destinatario e 2 cc, se rilevo 3 aperture non detto
che siano state effettuate dai tre indirizzi diversi.

grazie Matteo

le limitazioni dichiarate da Litmus, che confermano alcuni ragionamenti
che avevo fatto in passato, e generalmente parlando, non scorgo
soluzioni magiche al tracciamento (lettura/stampa/cancellazione) di
e-mail “transazionali”, se si parte dal requisito che il client mail
possa essere “qualsiasi cosa”.

Tempo addietro, mi ero malsanamente in testa di inviare degli ordini
e-commerce via e-mail, ed avere specie di “ricevuta di ritorno”.

Per tracciare l’avvenuta ricezione dell’ordine sul client (un raspberry
stampava l’ordine su carta), avevo concluso che la soluzione “giusta”
fosse mandare un feedback HTTP di “avvenuta ricezione”… In quel caso
il client era una applicazione Ruby di cui avevo controllo perchè l’ho
scritta io… BTW, mio rozzo codice per leggere mail IMAP IDLE:
https://gist.github.com/solyaris/b993283667f15effa579

P.S. ok ok, mandare email per transazioni “realtime” non è fosse il
massimo della furbizia. Ho optato poi per soluzione just-HTTP :slight_smile: