Il mio forum ha molti utenti importati con un dominio email specifico che non funziona più.
Alcune migliaia di utenti hanno un indirizzo email di questo tipo.
Non era un problema fino a ora, ma ho aumentato il valore di sopprimi email di riepilogo dopo giorni e il mio forum ha inviato molte email di riepilogo, anche a molti utenti con domini email non funzionanti.
Ciò ha causato troppi rimbalzi e Mailgun ha disabilitato il mio dominio.
Cosa dovrei fare con questi account per prevenire questo problema e risolvere la situazione? Molti di questi account appartengono a utenti legittimi che non sono ancora tornati sul forum. Non sono necessariamente account abbandonati.
A causa di questo problema, gli utenti non possono registrarsi al forum finché non viene risolto.
come descritto in Replace a string in all posts. Questo farà sì che Discourse non invii email a tutti quegli indirizzi. Un’altra buona soluzione sarebbe qualcosa del genere:
bad=User.find_by_email
<una ricerca che li recuperi tutti>
bad.update_all(active: false)
e disattivare tutti gli utenti con indirizzi email falsi noti. Non sono sicuro di come fare la prima parte a memoria, ma dovrebbe essere abbastanza semplice da capire.
Sì, ho pensato di fare questo per eliminare questi domini di posta elettronica.
Ho notato che un metodo di Discourse crea indirizzi email con @no-email.invalid:
E nel base dell’importatore, viene utilizzato @email.invalid, che è leggermente diverso:
Questi due “domini fittizi” diversi vengono entrambi ignorati quando Discourse deve inviare email?
Dovrei sostituire il mio dominio non funzionante con @no-email.invalid o @email.invalid, o non fa differenza?
@pfaffman, non sono sicuro di capire perché dovrei rimappare nei post invece di modificare gli indirizzi email degli utenti… Questi indirizzi email non si trovano nei post, a meno che non mi stia perdendo qualcosa.
Se è un metodo consigliato, vorrei semplicemente sostituire i miei indirizzi @brokendomains.com in ogni profilo con @no-email.invalid o @email.invalid. Posso capire come farlo, mi chiedo solo quale dominio “finto” usare.
UserEmail.where("email like '%@brokendomain.com'").each do |e|
e.update(email: SecureRandom.hex + "@email.invalid")
end
Anche il tuo potrebbe funzionare, ma non sono sicuro che il modello User sia stato aggiornato per poter usare u.email.include? dopo aver spostato le email in un altro modello/tabella.
Ho provato il mio script solo per verificare se restituisse gli indirizzi email di destinazione e funziona.
Il tuo script dovrebbe essere più veloce del mio, dato che utilizzi una query per selezionare domini email specifici invece di iterare su tutti gli utenti.
Grazie. Questa è quella che ho usato.
Più di 5000 utenti su un totale di 17000 avevano domini email del genere. Non sorprende il numero di rimbalzi quando ho aumentato sopprimi email di digest dopo giorni…