前提・実装したいこと
コントローラーのpayアクション(購入処理)が完了した際に顧客に購入確認メールを送信する。
エラーメッセージ
該当のソースコード
[config/initializers/mail.rb]
ruby
1if Rails.env.production? 2 ActionMailer::Base.delivery_method = :smtp 3 ActionMailer::Base.smtp_settings = { 4 address: 'smtp.gmail.com', 5 domain: 'gmail.com', 6 port: 587, 7 user_name: '自分のメアド', 8 password: 'パスワード', 9 authentication: 'plain', 10 enable_starttls_auto: true 11 } 12elsif Rails.env.development? 13 ActionMailer::Base.delivery_method = :letter_opener 14else 15 ActionMailer::Base.delivery_method = :test 16end
[application.mailer.rb]
ruby
1class ApplicationMailer < ActionMailer::Base 2 default from: '店長', 3 reply_to: '返信用アドレス' 4end
[notification_mailer.rb ]
ruby
1class NotificationMailer < ApplicationMailer 2 default from: "andotatsuhiro5@gmail.com" 3 layout 'mailer' 4 5 def send_confirm_to_customer(customer) 6 @customer = customer 7 mail to: @customer.email, 8 subject: "購入確認メール / お店より" 9 end 10end
[send_confirm_to_customer.html.haml]
haml
1= @customer.name 2様、この度は購入いただきありがとうございます。
[purchase_controller.rb]
ruby
1def pay 2 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 3 Payjp::Charge.create( 4 amount: params[:amount], 5 card: params['payjpToken'], 6 currency: 'jpy' 7 ) 8 purchase = Purchase.new(purchase_params) 9 @customer = Customer.find_by(id: purchase.customer_id) 10 if purchase.save 11 session[:cart_id] = nil 12 NotificationMailer.send_confirm_to_customer(@customer).deliver 13 else 14 render :index 15 end 16 end
また、letter_opener を使って、開発環境でメールを送るとブラウザで別タブでメールが開くように設定しております。
application.mailer.rbに layout 'mailer' を追記してみたり、
send_confirm_to_customer.text.erb で試したりしましたが解決せず、、、
アドバイスいただけますと助かります。。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。