Ruby on rails 3 继续获取发送邮件所需的发件人(返回路径、发件人或发件人)
我只是这样称呼它,Ruby on rails 3 继续获取发送邮件所需的发件人(返回路径、发件人或发件人),ruby-on-rails-3,actionmailer,ruby-on-rails-3.2,return-path,Ruby On Rails 3,Actionmailer,Ruby On Rails 3.2,Return Path,我只是这样称呼它,SupportMailer.support\u response(@message.deliver 如何修复此问题?我注意到您没有case语句的默认case。如果您从未在Mailer类中的方法中调用过“mail”方法,那么您将得到该错误。尝试将您的案例陈述转移到您调用SupportMailer的位置,可能每个案例都有相应的方法。这样,除非你已经确定了正确的彩票游戏,否则你永远不会给支持者打电话。肯定不需要标题;代码看起来是正确的,在您的例子中,default:from被调用ma
SupportMailer.support\u response(@message.deliver
如何修复此问题?我注意到您没有case语句的默认case。如果您从未在Mailer类中的方法中调用过“mail”方法,那么您将得到该错误。尝试将您的案例陈述转移到您调用SupportMailer的位置,可能每个案例都有相应的方法。这样,除非你已经确定了正确的彩票游戏,否则你永远不会给支持者打电话。肯定不需要标题;代码看起来是正确的,在您的例子中,
default:from
被调用mail
方法中的值覆盖。我会往上游看,哪里有船!方法,或者在环境文件中调用。错误来自交付后的第一次测试之一!方法。我已在控制器中查找。看起来不错。我的配置看起来很好。我将发布它们我已经在方法标题“returnpath”=>中添加了这一行email1@gmail.com“
现在它抱怨说,至少需要一个收件人(收件人、抄送或密件抄送)才能发送一条信息
,看起来邮件(…)
没有接收到它的参数。嗯--我用我的gmail帐户进行了测试,举个简单的例子。也许我看到了这个问题:我看到的所有建议都建议从一个环境文件中定义配置(我把我的放在app/config/environments/development.rb
只是为了测试。它启动了config.action\u mailer.raise\u delivery\u errors=true
config.action\u mailer.delivery\u method=:smtp
config.action\u mailer.smtp\u设置={
…也许这就是问题所在?否则,我会说:简化——去掉所有不必要的东西。这是正确的。理想情况下,从邮件中提取逻辑。如果你不想,你总是可以这样做:self.message.perform\u deliveries=false
如果你决定中止传递,不要调用return,因为它会继续传递执行并抛出相同的错误。
class SupportMailer < ActionMailer::Base
default :from => "email1@gmail.com"
def welcome_email(ticket)
case ticket.game
when "gameone"
@ticket = ticket
headers["Reply-to"] = "email1+#{ticket.token}@gmail.com"
headers["Return-Path"] = "email1+#{ticket.token}@gmail.com"
mail(:from => "email1@gmail.com", :to => ticket.email, :subject => "Welcome to 1 Support Ticket")
when "gametwo"
@ticket = ticket
headers["Reply-to"] = "email2+#{ticket.token}@gmail.com"
headers["Return-Path"] = "email2+#{ticket.token}@gmail.com"
mail(:from => "email2@gmail.com", :to => ticket.email, :subject => "Welcome to 2 Support Ticket")
when "gamethree"
@ticket = ticket
headers["Reply-to"] = "email3+#{ticket.token}@gmail.com"
header["Return-Path"] = "email3+#{ticket.token}@gmail.com"
mail(:from => "email3@gmail.com", :to => ticket.email, :subject => "Welcome to 3 Support Ticket")
end
end
end
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "emailx@gmail.com",
:password => "password",
:authentication => "plain",
:enable_starttls_auto => true
}