[Ruby/Rails] 메일 발송 기능의 실현 방법(Gmail)

9868 단어 HTMLRubyRailsCSS

메일 발송 기능의 실현 방법



공유


Ruby/Rails를 통해 메시지를 보내는 기능의 실현 방법
(이번에는 Gmail을 사용합니다.)

개발 환경


Ruby 2.4.1
Rails 5.1.4

전제 조건


본고에서 소개한 방법으로 메일 발송 기능을 실현할 때 다음과 같은 조건이 필요하다(1~3.)반드시 만족해야 한다.

1. Google 계정 만들기


2. 2단계 인증을 [유효]로 설정


3. 응용 프로그램 비밀번호 발표


상술한그리고다음 주소에서 확인하십시오.
Google > 로그인 및 보안 > Google에 로그인
https://myaccount.google.com/security#signin

Ruby를 통해 메일 발송 기능을 실현하는 방법


주안점


활용 require "mails"

보태다


다음 코드 예시에서YOUR_GMAIL_ADDRESS의 Gmail 주소GOOGLE_APP_PASSWORD의 응용 암호
따로따로 대입해 주십시오.

코드 예


mail.rb
require "mail"

mail = Mail.new do
    from "[email protected]" ##送信元メールアドレス
    to "[email protected]" ##送信先メールアドレス
    subject "Sample Mail from Ruby on Rails" ##メール件名
    body "This is sample page." ##メール本文
end

mail.delivery_method :smtp, { address:   'smtp.gmail.com',
    port:      587,
    domain:    'gmail.com',
    user_name: YOUR_GMAIL_ADDRESS,
    password:  GOOGLE_APP_PASSWORD}

mail.deliver

잡다


Gmail에서 [email protected] 참조+를 사용하면 여러 개의 수신 주소(메일 별명 기능)를 사용할 수 있다.

실행 결과


다음 명령을 입력하여 코드를 실행합니다
command
$ cd (directory having mail.rb)
$ ruby mail.rb
Gmail을 열어 메일이 성공적으로 발송되었는지 확인

위에서 말한 바와 같이 우편물을 받았다.

Rails에서 메일 발송 기능을 실현하는 방법


주안점


Rails 기능 1개Mailer 활용

설치 방법


여기에는 Rails 애플리케이션mailer에서 메일 발송 기능이 구현됩니다.

1.scaffold에 모형 보기 컨트롤러 설치


command
$ rails new mailer
$ cd mailer
$ rails g scaffold User name:string email:string

2. 명령을 사용하여 UserMailer 설치


command
$ rails g mailer UserMailer send_mail

3. UserMailer 편집


app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer

  def send_mail(user)
    @user = user
    mail to: user.email, subject:"Sample from Rails"
  end
end

4. users_controller 편집


여기에 사용자 정보가 새로 로그인되면 메일을 보냅니다.
create 동작에 추가 UserMailer.send_mail(@user).deliver_nowapp/controllers/users_controller.rb
class UsersController < ApplicationController

#...省略...

  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save

        ##追加したコード
        UserMailer.send_mail(@user).deliver_now

        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render :show, status: :created, location: @user }
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

#...省略...
end

5. 메일 본문 작성


command
mailer $ cd app/views/user_mailer
user_mailer cd touch send_mail.html.erb send_mail.txt.erb
app/views/user_mailer/send_mail.html.erb
<h1>Dear <%= @user.name %></h1>

<p>
  Thank you to join our app.
</p>
app/views/user_mailer/send_mail.txt.erb
Dear <%= @user.name %>
Thank you to join our app.

6. app/enviroments/development.편집


development.rb
Rails.application.configure do

# ..省略..

  config.action_mailer.raise_delivery_errors = true
  #デフォルトではfalseになっている

  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
      port: 587,
      address: 'smtp.gmail.com',
      domain: 'smtp.gmail.com',
      user_name: YOUR_GMAIL_ADDRESS,
      password: GOOGLE_APP_PASSWORD,
      enable_starttls_auto: true
  }

# ..省略..

실행 결과


다음 명령을 입력하여 프로그래밍을 실행합니다


command
$ cd mailer
$ rails s

다음 주소 액세스


Name에 이름을 입력하고 Email에 메일 주소를 입력하고 &[Create User]를 클릭합니다.



Gmail 확인


나는 네가 아래와 같은 우편물을 받았다는 것을 안다.

참고 자료


루비온 레일스 튜토리얼 11장

좋은 웹페이지 즐겨찾기