0

我正在第一次构建基于 Rails 的电子商务应用程序。我想在用户提交订单时向他发送一封电子邮件,就像我们在 mealnut.com 或 fab.com 上下订单时通过电子邮件收到收据的方式一样。我正在寻找教程,但与订单提交电子邮件无关。用户注册或重置等的每个地方。

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

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

4

3 回答 3

3

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

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

阅读动作邮件教程以获取更多信息。

于 2013-03-25T09:00:09.687 回答
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。

于 2013-03-25T08:59:41.497 回答
1

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

前任:

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

class OrderObserver < ActiveRecord::Observer

  def after_create(order)
    #Email sending code  
  end

end

当 Order#create 完成时,此 OrderObserver 会发送一封电子邮件。阅读更多关于观察者类

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

于 2013-03-25T09:47:56.513 回答