我试图在Rails 3.0.1应用程序上使用actionmailer发送邮件。这是我的装置
配置/初始化器/安装程序_mail.rb
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "saidyes.co.uk",
:user_name => "username",
:password => "password",
:authentication => "plain",
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
ActionMailer::Base.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?配置/环境/开发.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = trueapp/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default :from => "info@saidyes.co.uk"
def self.registration_confirmation(user)
@user = user
attachments["rails.png"] = File.read("#{Rails.root}/public/images/rails.png")
mail(:to => "#{user.email}", :subject => "Welcome")
end
endapp/models/user.rb
require "#{Rails.root}/app/mailers/user_mailer"
after_create :send_welcome_email
private
def send_welcome_email
UserMailer.registration_confirmation(self).deliver
end第一个错误是用户模型类中未初始化的常量UserMailer。我通过在用户模型定义的顶部添加需求来修正它。现在我得到了
UserMailer:Class的未定义局部变量或方法“附件”
我必须配置不正确的actionmailer,或者我的rails应用程序没有正确配置为使用mailer。
无论如何,任何建议或帮助都将不胜感激。
干杯
发布于 2011-10-03 07:03:53
我认为您遇到的一个简单问题是,应该在mailer类的实例上定义mail方法。
即它应该是
class UserMailer < ActionMailer::Base
def registration_confirmation(user)
@user = user
attachments["rails.png"] = File.read("#{Rails.root}/public/images/rails.png")
mail(:to => "#{user.email}", :subject => "Welcome")
end
end注意没有self
看一看关于这个主题的有用的导轨
如您的示例所示,您仍将调用类上的方法
UserMailer.registration_confirmation(user).deliver类方法执行一些魔术来实例化实例,并确保呈现了正确的模板。
https://stackoverflow.com/questions/7629148
复制相似问题