Rails:当用户下订单时,如何向用户发送订单电子邮件?

时间:2013-03-25 08:41:42

标签: ruby-on-rails ruby-on-rails-3 e-commerce

我是第一次构建基于rails的电子商务应用程序。我想在提交订单时向用户发送电子邮件,例如我们在订购电子邮件时收到电子邮件收据的方式。 mealnut.com或fab.com。我正在搜索教程,但没有与订单提交电子邮件相关。用户注册或重置等的每个地方

有人实施了吗?或者知道rails中的任何资源/教程?

您的指导/帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

我担心发送电子邮件是一个相当标准的程序..您找到的教程可能适用。您需要了解触发要发送的消息可以通过任何控制器操作完成..在您的情况下,您将需要订单创建操作。

阅读以下内容后:

http://railscasts.com/episodes/61-sending-email-revised?view=asciicast

您可以进行必要的更改,并通过订单创建操作调用邮件:

class OrdersController < ApplicationController
  def create
    @order = Order.new(params[:order])
    if @order.save
      UserMailer.order_confirmation(@order, @user).deliver
      redirect_to @user, notice: "Order Completed Successfully."
    else
      render :new
    end
  end
end

我在上面使用UserMailer的原因是因为您可能想要设置一个向用户发送消息的邮件程序,但如果您愿意,可以将其称为OrderMailer。

答案 1 :(得分:2)

首先生成用于编写所需操作的邮件程序。

rails g mailer UserMailer

然后在 app / mailers / user_mailer.rb 文件

class UserMailer < ActionMailer::Base
  default from: 'notifications@example.com'

  def order_confirmation(user, order)
    @user = user
    @order = order
    mail(to: user.email, subject: 'Order has been received')
  end
end

,电子邮件的观看内容就像这个app/views/user_mailer/order_confirmation.html.erb

Hi <%= @user.name %>

You have successfully placed an order with us.
Please find the details of order....
#.............

然后在控制器操作中,您将创建订单,在创建订单后放置以下行以发送电子邮件

UserMailer.order_confirmation(user, order).deliver

浏览action mailer tutorial以获取更多信息。

答案 2 :(得分:1)

您不能/不适合使用Devise邮件程序(因为设计邮件程序用于用户身份验证)。您可以做的是,您可以使用观察者类发送电子邮件

例如:

class Order < ActiveRecord::Base
   #your standard order code
end

class OrderObserver < ActiveRecord::Observer

  def after_create(order)
    #Email sending code  
  end

end

订单编辑完成后,此OrderObserver会发送一封电子邮件。 Read more about observer class

关于使用rails3 check this发送电子邮件,与发送忘记密码/注册等电子邮件相同,只是内容不同。