首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionmailer未识别rails 3应用程序

Actionmailer未识别rails 3应用程序
EN

Stack Overflow用户
提问于 2011-10-02 20:53:20
回答 1查看 2.5K关注 0票数 1

我试图在Rails 3.0.1应用程序上使用actionmailer发送邮件。这是我的装置

配置/初始化器/安装程序_mail.rb

代码语言:javascript
复制
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?

配置/环境/开发.

代码语言:javascript
复制
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true

app/mailers/user_mailer.rb

代码语言:javascript
复制
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
end

app/models/user.rb

代码语言:javascript
复制
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。

无论如何,任何建议或帮助都将不胜感激。

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-03 07:03:53

我认为您遇到的一个简单问题是,应该在mailer类的实例上定义mail方法。

即它应该是

代码语言:javascript
复制
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

看一看关于这个主题的有用的导轨

如您的示例所示,您仍将调用类上的方法

代码语言:javascript
复制
UserMailer.registration_confirmation(user).deliver

类方法执行一些魔术来实例化实例,并确保呈现了正确的模板。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7629148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档