NoMethodError: undefined method `mail' for main:Object on rails console
NoMethodError: undefined method `mail' for main:Object on rails console
我正在尝试测试邮件程序的工作情况。通常在 rails 我首先在控制台级别测试我的代码逻辑,一旦成功,我将其放入真正的源代码中。在 ApplicationMailer 上工作时,我正在尝试做同样的事情。我遵循了一些其他解决方案,首先 运行 rails 控制台上的以下内容首先设置 ActionMailer
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: '***********',
password: '******'
}
然后我 运行 我的代码:
y.include? x
if true
@receiver = Model.where(category_id: "#{x}").pluck(:email)
mail(to: @receiver, subject: @subject)
end
我收到以下错误:
NoMethodError: undefined method `mail' for main:Object
from (irb):19
有人可以告诉我如何在 rails 控制台上运行吗?
您可以使用以下方式测试邮件
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
Rails 设置了很多便利,这样你就可以,例如轻松从控制器发送邮件。
在控制台中,您不在控制器的上下文中,因此您还没有设置它。查看助手也是如此。
为了使用邮件方法,您需要告诉Ruby在哪里寻找它。
这样发送邮件应该就够了:
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
请记住,如果您只是想测试邮件生成,而不是与您的 SMTP 集成,您也可以使用不同的 delivery_method
s。
我正在尝试测试邮件程序的工作情况。通常在 rails 我首先在控制台级别测试我的代码逻辑,一旦成功,我将其放入真正的源代码中。在 ApplicationMailer 上工作时,我正在尝试做同样的事情。我遵循了一些其他解决方案,首先 运行 rails 控制台上的以下内容首先设置 ActionMailer
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: '***********',
password: '******'
}
然后我 运行 我的代码:
y.include? x
if true
@receiver = Model.where(category_id: "#{x}").pluck(:email)
mail(to: @receiver, subject: @subject)
end
我收到以下错误:
NoMethodError: undefined method `mail' for main:Object
from (irb):19
有人可以告诉我如何在 rails 控制台上运行吗?
您可以使用以下方式测试邮件
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
Rails 设置了很多便利,这样你就可以,例如轻松从控制器发送邮件。
在控制台中,您不在控制器的上下文中,因此您还没有设置它。查看助手也是如此。
为了使用邮件方法,您需要告诉Ruby在哪里寻找它。
这样发送邮件应该就够了:
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
请记住,如果您只是想测试邮件生成,而不是与您的 SMTP 集成,您也可以使用不同的 delivery_method
s。