gpt4 book ai didi

ruby-on-rails - 在 ActionMailer 中暂停发送电子邮件

转载 作者:行者123 更新时间:2023-12-04 05:39:32 24 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我想暂时停止为特定用户发送电子邮件(例如,当我因配额而退回电子邮件时),直到用户确认他能够再次接收电子邮件。

我有一个适用于所有邮件程序类的通用父类(super class)。在发送邮件之前,我总是调用方法 setup_email

哪里是调用 @user.mail_suspended? 的最佳位置?

这是一些简化的示例应用程序,我使用 Rails 2.3:

# Common super class for all Mailers
class ApplicationMailer < ActionMailer::Base

protected
def setup_mail(user)
@recipients = user.email
@from = ...
end
end

# Specific Mailer for User model
class UserMailer < ApplicationMailer

def message(user, message)
setup_mail(user)
@subject = "You got new message"
@body[:message] = message
end
end

# Use the UserMailer to deliver some message
def MessagesController < ApplicationController

def create
@message = Message.new(params[:message])
@message.save
UserMailer.deliver_message(@message.user, @message)
redirect_to ...
end
end

最佳答案

我通过将 ActionMailer::Base.perform_deliveries 设置为 false 解决了这个问题:

def setup_mail(user)
email = user.default_email
if email.paused?
ActionMailer::Base.perform_deliveries = false
logger.info "INFO: suspended mail for #{user.login} to #{email.email})"
else
ActionMailer::Base.perform_deliveries = true
end
# other stuff here
end

关于ruby-on-rails - 在 ActionMailer 中暂停发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432091/

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