【发布时间】:2013-12-13 14:08:53
【问题描述】:
我有一个控制器来处理 PayPal 的 IPN 回调。我想将与会者标记为“已付款”,并在他们成功付款后向他们发送确认电子邮件。
标记已付款操作有效,但电子邮件未发送。
这是我的控制器:
class PaymentNotificationsController < ApplicationController
protect_from_forgery :except => [:create]
def create
PaymentNotification.create!(:params => params, :attendee_id => params[:invoice], :status => params[:payment_status], :transaction_id => params[:txn_id])
if params[:payment_status] == 'Complete'
@attendee = Attendee.find(params[:invoice])
## Working
@attendee.update_attribute(:paid, Time.now)
## Not Working
UserMailer.welcome_email(@attendee).deliver
end
render nothing: true
end
end
这是我的 user_mailer 文件:
class UserMailer < ActionMailer::Base
default from: 'example@email.com'
def welcome_email(user)
@user = user
email_with_name = "#{@user.first_name} #{@user.last_name} <#{@user.email}>"
@url = 'http://example.com'
mail(
to: email_with_name,
subject: 'Welcome to Yadda Yadda'
)
end
end
奇怪的是,在另一个没有 PayPal 的控制器中,邮件程序可以正常工作:
class VendorsController < ApplicationController
def create
@vendor = Vendor.new(vendor_params)
if @vendor.save
UserMailer.welcome_email(@vendor).deliver
redirect_to vendor_success_path
else
render 'new'
end
end
end
【问题讨论】:
标签: ruby-on-rails email paypal paypal-ipn