我正在第一次构建基于 Rails 的电子商务应用程序。我想在用户提交订单时向他发送一封电子邮件,就像我们在 mealnut.com 或 fab.com 上下订单时通过电子邮件收到收据的方式一样。我正在寻找教程,但与订单提交电子邮件无关。用户注册或重置等的每个地方。
有没有人实施过?或者知道rails中的任何资源/教程?
您的指导/帮助将不胜感激!
我正在第一次构建基于 Rails 的电子商务应用程序。我想在用户提交订单时向他发送一封电子邮件,就像我们在 mealnut.com 或 fab.com 上下订单时通过电子邮件收到收据的方式一样。我正在寻找教程,但与订单提交电子邮件无关。用户注册或重置等的每个地方。
有没有人实施过?或者知道rails中的任何资源/教程?
您的指导/帮助将不胜感激!
首先生成用于编写所需操作的邮件程序。
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
阅读动作邮件教程以获取更多信息。
恐怕发送电子邮件是一个相当标准的程序。您找到的教程可能适用。您需要了解触发要发送的消息可以通过任何控制器操作来完成。在您的情况下,您需要订单创建操作。
阅读以下内容后:
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。
您不能/不适合使用设计邮件程序(因为设计邮件程序用于用户身份验证)。你可以做的是,你可以使用观察者类来发送电子邮件
前任:
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,它与发送忘记密码/注册等的电子邮件相同,只是内容不同。