¿Hay alguna manera simple de decirle a Devise que envíe todos los correos electrónicos a través de delayed_job?Enviando correo electrónico demorado de
Respuesta
Como alternativa, en lugar de utilizar el Retraso :: joya Mailer, se puede implementar y utilizar su propio bastante facilidad ActionMailer "Forma de entrega", uno que ...
- intercepta entrega de correo de ActionMailer
- almacena el correo electrónico en una mesa (opcional)
- crea un retardado :: Trabajo que hace referencia al correo electrónico almacenado
- entrega el correo electrónico almacenado cuando se ejecuta el trabajo retrasado
hacer algo en la línea de:
# in config/application.rb
ActionMailer::Base.add_delivery_method :queued, Mail::QueuedDelivery
# in config/environment.rb (or one of the config/environments/*.rb files)
config.action_mailer.delivery_method = :queued # ie. Mail::QueuedDelivery
# in lib/mail/queued_delivery.rb
module Mail
class QueuedDelivery
def initialize(values = {})
# (optional)
end
def deliver!(mail)
email = Email.create!(:delivery_handler => mail.delivery_handler.name, :message => mail.to_s)
Delayed::Job.enqueue Jobs::Email::DeliverEmail.new(email.id)
end
end # class QueueDelivery
end # module Mail
El Retraso :: trabajo que usted necesita para poner en práctica lo haría entonces ...
- recuperar el correo electrónico almacenado en la base de datos -
email = ::Email.find_by_id(email_id)
- entregar el correo electrónico a través de la gema electrónico -
Mail::Message.new(email.message).deliver
eso es todo ... espero que esto ayuda!
No tengo idea de qué es Devise pero supongo que es una gema de terceros que no desea modificar. Pruebe delayed_job_mailer. Puede extender los anuncios publicitarios de Devise mono parcheándolos para usar el trabajo demorado.
class SomeExistingMailer
include Delayed::Mailer
end
o si desea enviar todos los correos electrónicos a través de aplicaciones de trabajo retrasado por defecto:
# config/initializers/delayed_mailer.rb
class ActionMailer::Base
include Delayed::Mailer
end
¿Esto terminó funcionando? Estoy buscando la misma solución – AnApprentice
Intenté su segunda sugerencia, que sería increíble si funcionaba, pero me salió un error "/Users/bhellman/Sites/cline/config/initializers/delayed_mailer.rb:3: constante no inicializada Retrasada: : Mailer (NameError) " – AnApprentice
Esto me parece que la joya de correo retrasada no se ha cargado. ¿Lo especificó en Gemfile, finalmente lo requiere en environment.rb – gertas
Descubrí que ninguna de las anteriores funcionó para mí. Estoy usando Devise 2.0.4 y Rails 3.2.2 con retraso_job_activo_registro 0.3.2
La forma en que el diseño realmente habla de hacer algo como esto en los comentarios en el código es anular los métodos en la clase de Usuario. Por lo tanto, lo resolví como tal, y funciona perfectamente:
app/modelos/User.rb
def send_on_create_confirmation_instructions
Devise::Mailer.delay.confirmation_instructions(self)
end
def send_reset_password_instructions
Devise::Mailer.delay.reset_password_instructions(self)
end
def send_unlock_instructions
Devise::Mailer.delay.unlock_instructions(self)
end
En la actualidad existe el proyecto legado-asíncrono que logra exactamente esto:
- 1. Enviando correo electrónico masivo solicitado
- 2. Enviando correo electrónico en C#
- 3. SMTP enviando un correo electrónico de prioridad
- 4. Enviando correo electrónico usando GMail en android
- 5. GitLab ¿El correo electrónico no está enviando?
- 6. Enviando un correo electrónico HTML usando Swift
- 7. Enviando correo electrónico usando email.mime.multipart en Python
- 8. Enviando correo electrónico HTML usando Python
- 9. Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
- 10. Enviando gráfico de visualización de google al correo electrónico
- 11. Enviando correo electrónico en Android usando la API de JavaMail
- 12. Restablecimiento de contraseña enviando contraseñas temporales por correo electrónico
- 13. Enviando un correo electrónico a la cuenta de yahoo
- 14. enviando un archivo adjunto de correo electrónico usando TCPDF
- 15. Enviando resultados de una matriz aleatoria al correo electrónico php
- 16. Enviando un correo electrónico a través de VB6
- 17. Enviando un correo electrónico desde un web2py en GAE
- 18. Enviando correo electrónico HTML usando PHP: incluyendo el archivo HTML
- 19. Enviando correo electrónico con formato HTML en Android
- 20. enviando un correo electrónico con varios archivos adjuntos
- 21. Enviando correo electrónico usando smtp y estableciendo el id-mensaje
- 22. Enviando correo electrónico usando Zend Framework y PHP
- 23. Enviando un correo electrónico cuando se lanza una excepción
- 24. Enviando correo electrónico en Java utilizando Apache Commons email libs
- 25. enviando correo desde apache tomcat
- 26. enviando correo desde el archivo por lotes
- 27. ¿Enviando correo con recibo de entrega?
- 28. Enviando correo usando SmtpClient en .net
- 29. cómo enviar correo electrónico HTML
- 30. Integración de correo electrónico
http://stackoverflow.com/questions/4125564/rails-devise-delay ed-job – Zabba