Comme le titre l'indique, mais j'y suis un peu accro, alors prenez note
Je voulais ignorer le courrier lorsque l'exécution du travail était terminée, je l'ai donc implémenté comme suit
XxxxJob.rb
Mailer.send_mail(user).deliver_later
Alors, vérifiez légèrement le fonctionnement ... Confirmez qu'il est mis en file d'attente dans le journal, J'ai couru ce qui précède sur la console des rails et l'ai vu sur letter_opener
Quand je le mets dans l'environnement de vérification, le courrier ne vole pas ...
Je ne pouvais pas le comprendre même si je déboguais diverses choses, et je ne pouvais pas le trouver en particulier même lorsque je cherchais sur le net.
En général, les files d'attente asynchrones (comme l'envoi de courrier avec .deliver_later) ne fonctionnent pas lorsqu'elles sont écrites dans une tâche Rake. Cela est dû au fait que lorsque Rake se termine, .deliver_later peut supprimer le pool de threads en cours avant de terminer le traitement du courrier. Pour contourner ce problème, utilisez .deliver_now ou exécutez une file d'attente persistante dans l'environnement de développement.
https://railsguides.jp/active_job_basics.html#action-mailer
Il a été écrit au maximum Quand je l'ai réglé sur delivery_now, le courrier a volé sans incident
XxxxJob.rb
Mailer.send_mail(user).deliver_now
Au fait, j'ai choisi livrer_later
car le processus existant est comme ça, et il vaut mieux être asynchrone.
Donc, utilisez delivery_now
lorsque vous ignorez le courrier du travail