gpt4 book ai didi

ruby-on-rails - 延迟工作和行动邮件

转载 作者:行者123 更新时间:2023-12-04 06:32:22 25 4
gpt4 key购买 nike

我在使用 ActionMailer 实现延迟作业时遇到问题:
延迟作业实现前:

class NotificationsMailer < ActionMailer::Base

default :from => "noreply@mycompany.com"
default :to => "info@mycompany.com"

def new_message(message)
@message = message
mail(:subject => "[Company Notification] #{message.subject}")
end

end

并使用这条线调用它(它工作得很好):
NotificationsMailer.new_message(@message).deliver

在延迟作业实现之后,我所做的就是将交付线更改为:
NotificationsMailer.delay.new_message(@message)

此外,我使用以下方法启动了作业队列
rake jobs:work

如果作业关闭,我可以看到数据库中的对象,并且在我启动工作程序后我可以看到它们被弹出但没有任何 react (没有发送电子邮件)。

更新 - 其他延迟任务(与邮件无关)工作正常。

任何人都可以帮助新手吗?

提前致谢!!

最佳答案

我花了很多时间使用延迟作业发送电子邮件,终于成功了。

在 Gem 文件中

gem 'delayed_job'
gem 'delayed_job_active_record'

在 Controller 中
 def dtest

UserMailer.delay.welcome_email
render json:"Succes"
return
end

在邮件中
class UserMailer < ActionMailer::Base
default from: "from@example.com"

def welcome_email
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: 'gmail.com',
Authentication: "plain",
enable_starttls_auto: true,
user_name: 'your@gmail.com',
password: 'yourpassword'
}

mail(to: 'no-reply@gmail.com', subject: 'Background Email Test').deliver

end

end

在此之后,我只是启动 Rails 服务器并开始工作
rake jobs:work

我希望,它会帮助你们并且使用“延迟作业”发送电子邮件可以正常工作:)

关于ruby-on-rails - 延迟工作和行动邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14547389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com