加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 控制在不同环境中记录和发送电子邮件

发布时间:2020-12-16 23:26:02 所属栏目:百科 来源:网络整理
导读:在Rails应用程序中,我在其环境/文件中设置了一个新的临时环境,其中包含以下参数: config.action_mailer.perform_deliveries = trueconfig.action_mailer.raise_delivery_errors = trueconfig.action_mailer.delivery_method = :smtp 但是,当系统生成电子邮
在Rails应用程序中,我在其环境/文件中设置了一个新的临时环境,其中包含以下参数:
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp

但是,当系统生成电子邮件时,它会打印到staging.log文件而不是发送.我的SMTP设置在其他环境中正常工作.为了让电子邮件真正发送,我错过了什么配置?

编辑:是,设置了暂存框,其中包含有权访问的SMTP服务器的有效配置.似乎问题不在于SMTP设置(如果是,我不会在日志中得到错误吗?),但是使用Rails配置.应用程序仍然将电子邮件重定向到日志文件(说“已发送邮件:…”),而不是实际通过SMTP.

编辑#2:看起来电子邮件实际上已经正确发送,它们恰好也会打印到日志中.我正在尝试使用sanitize_email gem将邮件重定向到另一个地址,这似乎不起作用,这就是为什么我认为电子邮件没有出去.所以我认为这解决了我的问题,虽然我仍然很好奇ActionMailer的设置控制电子邮件是发送,记录到日志文件,还是两者.

编辑#3:sanitize_email的问题归结为我需要将新的临时环境添加到ActionMailer :: Base.local_environments.我会保持这个问题的开放,看看是否有人可以回答我的最后一个问题(什么决定了ActionMailer的电子邮件是否被发送出去,登录到日志文件,或者两者兼而有之?)

解决方法

关于第三次编辑,日志记录是您为应用程序本身设置的日志级别的函数,而不是ActionMailer中的任何特定设置.

在Rails 2.3中,ActionMailer :: Base只是将电子邮件发送到已配置的任何记录器(如果有).收件人将被发送到信息日志,电子邮件正文将发送到调试日志. (评论是我的.其余的都是源代码.)

def deliver!(mail = @mail)
  raise "no mail object available for delivery!" unless mail

  #
  # Logging happens first (or not)
  #
  unless logger.nil?
    logger.info  "Sent mail to #{Array(recipients).join(',')}"
    logger.debug "n#{mail.encoded}"
  end

  #
  # And then we decide if an email should really get sent
  #
  begin
    __send__("perform_delivery_#{delivery_method}",mail) if perform_deliveries
  rescue Exception => e  # Net::SMTP errors or sendmail pipe errors
    raise e if raise_delivery_errors
  end

  return mail
end

您的environment.rb或staging.rb文件应该有一行控制日志级别.类似于以下内容:

config.log_level = :debug

这些都与您已找到的邮件程序配置完全分开,后者控制是否发送电子邮件.

config.action_mailer.perform_deliveries = true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读