Rails5.1.3でWebアプリケーションの勉強をしながら、実際に公開することを目指して制作しています。
その中の機能として特定のユーザーに対してcronで定期的にメールを送信するようにしたいのですが、あやふやなので
教えてください。 自分なりの解釈では以下の順番でコードを記述すればと思っていますが違うような感じもしています。
1,Action Mailerの設定 (config/development.rb)
2,メーラーの生成 (rails g mailer notice sendmail)
3,生成されたメーラーを編集する。 (app/mailers/notice_mailer.rb なのか app/lib/notice_mailer.rb なのか)
4,メール本文のデザインをする。 (notice_mailer/sendmail.html.erb)
5, cronに登録する。 (config/schedule.rb)
こんなイメージを持っていますが、libディレクトリにファイルをおいてcronで実行するのかな?などよくわかりません。
また、ユーザーを特定するコードをnotce_mailer.rbに記述してもいいものかどうかもよくわからないのです。
一応、コードは以下になっています。
1,Action Mailerの設定 config/development.rb Rails.application.configure do ・・・中略・・・ config.action_mailer.delivery_method = :smtp config.action_mailer.raise_delivery_errors = true config.action_mailer.smtp_settings = { address: 'smtp.examples.com', port: 587, user_name: 'hogehoge', password: 'secret', domain: 'examples.com' } end
2, メーラーの生成 $ rails g mailer notice sendmail
3, 生成されたメーラーを編集する。(libフォルダに記述するのか?、そのままこのファイルに記述するのか?) app/mailers/notice_mailer.rb なのか app/lib/notice_mailer.rb なのかどちらに記述するのでしょうか? class NoticeMailer < ActionMailer default from: "from@example.com" def sendemail @user = Customer.where(gender: 1) @user.each do |name| mail to: name.email, subject: "ありがとうございました。" render "sendmail" end end end
4,メール本文のデザインをする。 notice_mailer/sendmail.html.erb <%= @user.username %>さま このたびは、ご利用ありがとうございました。
5, cronに登録する。 config/schedule.rb every 1.days, at: "7:00 am", roles: [:app] do runner "NoticeMailer.sendmail.deliver" end
ネットでいろいろ調べてこんな感じで記述すればいいかと思いましたが、この記述方法で genderが1のユーザーにのみ
定期的にメール送信できるのでしょうか?
しかし、メーラーの生成を $ rails g mailer notice sendmail で行うと メーラーはapp/meilersフォルダの配下に
できるのでそこにコードを記述していけばいいのでしょうか?それともそれを無視して(削除して)libフォルダに
メーラーを記述するのでしょうか?
どなたか修正箇所も含めて教えていただけないでしょうか?宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/06 08:31
2018/01/06 08:40
2018/01/06 09:02
2018/01/06 09:11
2018/01/06 12:20
2018/01/06 13:28
2018/01/07 02:56