【问题标题】:Email could not sent using Ruby on Rails 3?无法使用 Ruby on Rails 3 发送电子邮件?
【发布时间】:2023-03-28 08:50:02
【问题描述】:

我正在尝试使用 ROR 通过 action mailer 发送一封电子邮件。但即使它没有显示任何错误也无法发送。我在下面解释我的代码。请检查这些并让我知道我在哪里出错以及可能的解决方案。

views/users/_form.html.erb:

<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

views/user_mailer/registration_confirmation.html.erb:

Thank you for registering! 

控制器/users_controller.rb

class UsersController < ApplicationController
  # GET /users
  # GET /users.json
  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
  end

  # GET /users/1
  # GET /users/1.json
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @user }
    end
  end

  # GET /users/new
  # GET /users/new.json
  def new
    @user = User.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @user }
    end
  end

  # GET /users/1/edit
  def edit
    @user = User.find(params[:id])
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        UserMailer.registration_confirmation(@user).deliver  
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render json: @user, status: :created, location: @user }
      else
        format.html { render action: "new" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /users/1
  # PUT /users/1.json
  def update
    @user = User.find(params[:id])

    respond_to do |format|
      if @user.update_attributes(params[:user])
        format.html { redirect_to @user, notice: 'User was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
    end
  end
end

mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: "subhrajyotipradhan@gmail.com"
  def registration_confirmation(user)  
    mail(:to => user.email, :subject => "Registered")  
  end  
end

config/initializers/setup_mail.rb

ActionMailer::Base.smtp_settings = {  
  :address              => "smtp.gmail.com",  
  :port                 => 587,  
  :domain               => "gmail.com",  
  :user_name            => "subhrajyotipradhan@gmail.com",  
  :password             => "XXXXXXX",  
  :authentication       => "plain",  
  :enable_starttls_auto => true  
}  

【问题讨论】:

  • 您是否遇到任何错误?我希望这不是您的正确密码。
  • 嗨 Santhosh,我没有收到任何错误,而且我的密码正确。
  • @rajat_474 不知道哪里出了问题!但是您可以访问google.com/settings/security/lesssecureapps 并选择“打开”吗?让我们知道它是否有效!
  • @Harsha 不,我打开了但结果相同..没有发送任何电子邮件
  • 你能检查你的控制台是否有任何异常吗?

标签: ruby ruby-on-rails-3 email


【解决方案1】:

在您的config/environments/&lt;RAILS_ENV&gt;.rb 中,更改或添加以下配置,然后重新运行您的测试:

config.action_mailer.delivery_method = :file
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

使用此配置,邮件实际上不会通过 SMTP 传递,而是存储在 tmp/mails/ 中。如果没有出现错误,请检查您的 SMTP 设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 2011-02-08
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多