7
votes

Envoi de courriels retardés de Devise

Y a-t-il un moyen simple de dire à l'intention d'envoyer tous les emails via retarded_job?


4 Réponses :


3
votes

Je n'ai aucune idée du concevoir, mais je suppose que c'est une bijou de tiers que vous ne voulez pas modifier. Essayez retarded_job_mailer . Vous pouvez étendre le congédiateur par singe les patchisant pour utiliser retarded_job. xxx pré>

ou si vous souhaitez envoyer toutes les e-mails d'application via un travail différé par défaut par défaut: p>

# config/initializers/delayed_mailer.rb
class ActionMailer::Base
  include Delayed::Mailer
end


2 commentaires

J'ai essayé votre 2e suggestion qui serait incroyable si cela fonctionnait, mais j'ai eu une erreur "/ Utilisateurs / Bhellman / Sites / Cline / Initialiseurs / Deliered_mai ler.rb: 3: Différées constantes non initialisées :: Mailer (NameError)"


Cela me semble que le mailateur retardé n'a pas été chargé. L'avez-vous spécifié dans gemfile, finalement l'exiger dans Environnement.rb



12
votes

Alternativement, au lieu d'utiliser le delier retardé :: Mailer GEM, vous pouvez facilement mettre en œuvre et utiliser votre propre action d'action "Méthode de livraison", celle qui ...

  1. intercepte la livraison du courrier de ActionMailer
  2. stocke l'email dans une table (facultatif)
  3. crée un emploi retardé :: travail qui fait référence à l'email stocké
  4. offre le courrier électronique stocké lorsque le travail différé est exécuté

    faire quelque chose sur les lignes de: xxx

    le retardé :: travail que vous devez implémenter serait alors ...

    1. récupérez l'email stocké dans la base de données - e-mail = :: email.find_by_id (e-mail_id)
    2. Livrez l'e-mail via la mail gem - mail :: Message.New (email.message) .Deliver

      C'est ça ... J'espère que cette aide!


0 commentaires

2
votes

J'ai trouvé qu'aucun de ces réponses ne fonctionnait pour moi. J'utilise Devise 2.0.4 et Rails 3.2.2 avec retarded_job_active_record 0.3.2

The Way Devise parle de faire quelque chose comme celui-ci dans les commentaires du code consiste à remplacer les méthodes de la classe d'utilisateurs. Ainsi, j'ai résolu cela comme ça, et cela fonctionne parfaitement:

app / modèles / user.rb xxx


0 commentaires