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的电子邮件是否被发送出去,登录到日志文件,或者两者兼而有之?)
解决方法
在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。