目標

wheneverを導入して毎日am9:00に下記の内容を管理者にメールで送信させる ・メールの件名には「公開済記事の集計結果」と設定 ・管理者のメールアドレスには[email protected]を設定

rails g mailer ArticleMailer

上記のコマンドで以下のものが実行できる。

application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: '[email protected]'
  layout 'mailer'
end

article_mailer.rb

class ArticleMailer < ApplicationMailer
  def report_summary
    @published_article_count = Article.published.count
    @articles_published_at_yesterday = Article.published_at_yesterday
    mail(to: '[email protected]', subject: '公開済記事の集計結果')
  end
end

メール本文のviewを作成

app/views/article_mailer/report_summary.text.erb

公開済の記事数: <%= @published_article_count %>件

<% if @articles_published_at_yesterday.present? %>
  昨日公開された記事数: <%= @articles_published_at_yesterday.count %>件
  <% @articles_published_at_yesterday.each do |article| %>
    タイトル: <%= article.title  %>
    公開日時: <%= l(article.published_at) %>
  <% end %>
<% else %>
  昨日公開された記事はありません
<% end %>

注意

mailerのviewでHTMLタグなどを書かないこと

理由

他のViewファイル同様レイアウトファイルが指定されているから