rails3.1.0 发邮件 与问题

配置:

  

  Railsconfig/environments目錄下針對不同執行環境會有不同的郵件伺服器設定:

  

config.action_mailer.delivery_method

 

支援的選項包括:test:sendmailsmtp。在config/environments/test.rb中,預設是:test,也就是並不會實際寄信,而是將信件存在ActionMailer::Base.deliveries陣列中方便做功能測試。sendmail則是使用伺服器的/usr/bin/sendmail程式,不過因為因為不是每台伺服器都有適當安裝sendmail,所以最推薦的方式是採用:smtp協定來寄信,例如以下是一個使用Gmail寄信的範例,請修改config/environments/development.rbconfig/environments/production.rb:

config.action_mailer.delivery_method=:smtp
config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "gmail.com",
    :authentication => "plain",
    :user_name => "example@gmail.com",
    :password => "123456",
    :enable_starttls_auto => true
 }

 和Controller一樣,Rails也用generate指令產生Mailer類別,此類別中的一個方法就對應一個Email樣板。以下是一個產生Mailer的範例:

rails generate mailer UserMailer confirm

 如此便會產生 app/mailers/user_mailer.rb 檔案,並包含一個 confirm 的動作,其 template 在 app/views/user_mailer/ 下,也就是 confirm.text.erb (純文字格式)或 confirm.html.erb (HTML格式)。如果兩種格式的樣板檔案都有,那麼Rails會合併成一封Multiple Content TypesEmail

 

class UserMailer < ActionMailer::Base  
    default :from => "foobar@example.org"  

    def confirm(email)
        @message = "Thank you for confirmation!"
        mail(:to => email, :subject => "Registered")  
    end  
end  

 

其中 default 可以設定預設的寄件人。而 mail 方法可以設定收件人和郵件主旨。和View一樣,@user物件變數可以在app/views/user_mailer/confirm.text.erbapp/views/user_mailer/confirm.html.erb或樣板中存取到。

我們可以在 rails console 中測試,執行 UserMailer.confirm(“someone@example.org”).deliver 就會寄信出去。

同时修改:

 # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = true

 可以查看当邮件没发送时的错误信息。

注册时应用,我們會在 controller 之中,例如使用者註冊之後寄發信件:

def create
    user = User.new(params[:user])
    if user.save
        UserMailer.confirm(user.email).deliver
        redirect_to users_path
    else
        render :action => :new
    end
end

 以上内容来自 Ruby on Rails 实战圣经

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值