rails로 모든 사용자에게 메일을 보냅니다.

3687 단어 Rails

개시하다


모든 사용자에게 메일을 보내는 방법입니다.

미리 준비하다


우선 프로그램 설정부터 시작할게요.
rails new sample_mail
rails g model user name:string email:string
rails db:migrate
rails g controller mails index send_mail
루즈로.달성
get 'mails/index'
get 'mails/send_mail'
그러면 돼요.
gemfile에서
gem 'faker'
... 로 삼다
그런데 데이터를 만들어야 돼요.
rails c
100.times { User.create(name: Faker::Name.first_name, email: Faker::Internet.email }
이렇게 하면 사용자가 100명이 된다.

우편물을 보내다


먼저
rails g mailer SampleMailer
.
그러면 필요한 서류를 만들 수 있어요.
mailers/sample_mailer.rb에 사용자에게 메일을 보내는 처리
sample_mailer.rb

def send_mail(user)
  @user = user
  mail(subject: '確認メール',to: user.email, from: "[email protected]")
end 

def self.send_mail_users
  @users = User.all
  @users.each do |user|
    SampleMailer.send_mail(user).deliver_now
  end 
end 

send_메일 방법은 일반적으로 한 사용자에게 메일을 보내는 것이다
SampleMailer.send_mail(user).deliver_now
그리고user에게 메일을 보낼 수 있습니다.
그러니까 셀프.send_mail_users@users=User.거기서부터 순환하기 시작한다.모두에게 메일을 보내고 있습니다.
다음
views/sample_나는 메일에 메일의 내용을 쓸 것이다.
send_mail.html.erb,send_mail.text.만들다
파일 이름은 메일을 보내는 방법의 이름과 같을 수 없습니다.
내용을 적당히 기입하시면 됩니다.
마지막으로 메일에 대한 설정을 config/environment로 설정합니다.rb에 쓰다.
요컨대
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: "127.0.0.1", port: 1025}
미리 쓰다.
그리고 실행하면 메일을 보낼 수 있어요.
views/mails/index.html.erb
<%= link_to "送信", mails_send_mail_path %>
... 로 삼다
controllers/mails_controller.달성

def index 
end 

def send_mail
  SampleMailer.send_mail_users
  redirect_to mails_index_path
end 

이렇게 쓰면 돼요.
index에 방문하여 발송을 누르면 모든 사람에게 메일을 보낼 수 있습니다.

확인


메일을 제대로 보냈는지 확인하고 싶어요.
gem install mailcatcher
... 로 삼다
콘솔을 사용하다
mailcatcher
그리고 메일로.
그 뒤에
127..0.1: 1080에 방문하면 발송된 메일을 확인할 수 있습니다.
종결어.

좋은 웹페이지 즐겨찾기