rails의 actionmailer를 통해 메일 알림 기능 만들기

4522 단어 RubyRails

하고 싶은 일

  • controller에서 호출하여 actionmailer를 통해 메일 보내기
  • 전체 이미지



    초기 설정

  • application_메일러를 통해 메일 주소 설정 등
  • (gmail 사용 시)gmail의 설정
  • 메시지 만들기

  • rails generate mailer 명령으로 메일 만들기
  • view에 텍스트 본문 만들기
  • 호출 방법
  • 메일 만드는 법

    $ bin/rails generate mailer UserMailer
    
    app/mailers/application_mailer.rb
    class ApplicationMailer < ActionMailer::Base
      default from: "[email protected]"
      layout 'mailer'
    end
    
    app/mailers/user_mailer.rb
    class UserMailer < ApplicationMailer
    end
    
    메일은 controller와 비슷하며 상기 명령을 통해view(메일 내용)와 테스트를 생성합니다.이 메일에서 사용할 수 있는 옵션은 다음과 같다
    겸사겸사 말씀드리지만, 저도 bin/rails 지령을 찾았습니다.
    Rails는 프로젝트 루트를 우선적으로 시작하는 bin 디렉터리의 rails 파일 (실행 파일) 의 규격이기 때문입니다.
    rails 명령이라면 bin/을 추가하지 않고 라크 명령을 추가합니다.

    config 구성


    config의 기술 위치


    cofig/environments/○○.rb 쓰기나 config/initializers/두 가지 모드가 있습니다.
    cofig/environments/○○.rb는 파일 환경에만 적용됩니다. config/initializers/모든 환경에서 사용하고 싶을 때 사용합니다.
    config/environments/development.rb
    ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.smtp_settings = {
      address: 'smtp.gmail.com',
      domain: 'gmail.com',
      port: 587,
      user_name: 'Gmail のメールアドレス',
      password: 'Gmail のパスワード',
      authentication: 'plain',
      enable_starttls_auto: true
    }
    

    smtp 모드의 설정 정보

  • address=>SMTP 서버의 호스트 이름
  • port = SMTP 서버의 포트 번호
  • domain=>에서 사용하는 gmail 계정의 영역입니다.무료 계좌로 전송하면 무료 계좌역(gmail 등)을 사용할 수 있다.유료인 경우에는 독립 도메인 이름입니다.
  • user_메일을 보내는 gmail 계정
  • password=>메일로 보내는 gmail의 비밀번호
  • authhentication=>인증 방법
  • enable_starttls_auto=> 메시지를 보낼 때 TLS 인증 사용 여부
  • 참조: https://qiita.com/Yama-to/items/823baf26bba3193712ea
    암호는 반드시 아래의 방법을 통해 응용 암호를 획득해야 한다

    전자 메일 본문으로 작성


    app/views/user_e-메일/디렉토리에 설정된 인스턴스 변수 이름입니다.html.eb 파일을 만들면 메일의 본문을 편집할 수 있습니다.text.eb로 하면 텍스트 메일이 됩니다.

    전자 메일 설정


    gmail에서 보낼 때 다음과 같은 작업을 해야 합니다
  • 2단계 인증 활성화
  • 암호 설정 적용
  • 터미널은 적절할 수 있음
  • 전송 설정 시 설정된 계정을 미리 잘 변경
  • controller의 기술


    app/controllers/post_controller.rb
    NotificationMailer.send_oubo_notification("なんか引数あったらここに").deliver_later
    

    사소한 주의점

  • actionmailer는activejpb에서 비동기적으로 진행되기 때문에 사용자는 완성을 기다릴 필요가 없습니다.
  • 메일을 보는previewhttps://railsguides.jp/action_mailer_basics.html#%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC
  • 좋은 웹페이지 즐겨찾기