Rails 使用gmail开发模式发送邮件

Rails send mail with gmail development mode

在开发中我没有弄清楚如何从 gmail 发送邮件environment.It 没有发送电子邮件。我没看懂 rails 指南,而且我想知道生产环境是否相同?

config/development.rb

config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'something.com' } 
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address:              'smtp.gmail.com',
port:                 587,
domain:               'mail.google.com',
user_name:            'myusername@gmail.com',
password:             'mypassword',
authentication:       'plain',
enable_starttls_auto: true  }

mailer/user_mailer.rb

 default :from => 'something.com'

 def welcome_email(user)
   @user = user
   @url  = 'http://something.com'
   mail(to: @user.email, subject: 'Welcome')
 end

编辑

where I call, in users create method,

UserMailer.welcome_email(@user).deliver_now

您可以通过两种方式调用邮件程序方法来发送电子邮件,

  1. UsersControllercreate行动中

    def create
        #your codes and logics to save user...
        UserMailer.welcome_email(@user).deliver_now
        #your codes goes here ...  
    end  
    
  2. User模型中after_create回调

     class User < ActiveRecord::Base
       after_create :send_email
    
       def send_email
          UserMailer.welcome_email(self).deliver_now
       end  
     end
    

我更喜欢第二个发送电子邮件,使用模型回调而不是在控制器中。

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

development.rb 中尝试此操作,它将发送邮件或在控制台中引发传递错误。