我是第一次构建基于rails的电子商务应用程序。我想在提交订单时向用户发送电子邮件,例如我们在订购电子邮件时收到电子邮件收据的方式。 mealnut.com或fab.com。我正在搜索教程,但没有与订单提交电子邮件相关。用户注册或重置等的每个地方
有人实施了吗?或者知道rails中的任何资源/教程?
您的指导/帮助将不胜感激!
答案 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发送电子邮件,与发送忘记密码/注册等电子邮件相同,只是内容不同。