Le email di riepilogo della chat vengono saltate per gli utenti con un’email valida:
Ho fatto alcune analisi e credo di sapere perché:
Ecco dove avviene il salto:
Questo perché message.to è vuoto.
message.to è vuoto perché gli argomenti passati a send_user_email non includono to_address e questo non viene mai arricchito con l’email primaria dell’utente, ad esempio:
Questo viene chiamato da Chat Mailer, e noterai che to_address manca:
E questo va forse bene, ma quando arrivi in cima a send_user_email, credo che to_address dovrebbe essere arricchito con l’email dell’utente in modo che quando viene passato avanti, all’emailer venga dato accesso a questa proprietà e l’invio dell’email abbia successo.
Quando ho aggiunto questa piccola patch a send_user_email, il problema scompare:
# BUG CORE: se non impostiamo to_address, alla fine l'email non verrà inviata e verrà saltata.
# Questo è un bug core e dovremo segnalarlo su Meta.
if args[:to_address].blank? && user&.primary_email&.email
args[:to_address] = user&.primary_email&.email
end
Ho approfondito un po’ la questione e, se seguiamo il percorso, dovremmo ottenere un arricchimento:
Inizia dall’emailer qui e poi chiama l’estensione delle notifiche utente che arricchisce con l’email dell’utente qui e poi la passa all’helper di costruzione dell’email qui e infine imposta l’indirizzo nel costruttore del messaggio qui prima di inviarlo.
A parte questo, l’email di riepilogo della chat funziona già su altri siti, quindi è probabile che qualcos’altro stia causando un problema qui.
Penso che una soluzione intermedia sia passare l’email dell’utente al job, il che dovrebbe darci un po’ più di sicurezza/visibilità sul fatto che i dati corretti siano presenti fin dall’inizio: