Ruby on Rails-이메일 보내기

Action Mailer애플리케이션이 이메일을 보내고받을 수 있도록하는 Rails 구성 요소입니다. 이 장에서는 Rails를 사용하여 이메일을 보내는 방법을 살펴 보겠습니다. 생성을 시작합시다emails 다음 명령을 사용하여 프로젝트.

tp> rails new mailtest

계속 진행하는 데 필요한 프레임 워크가 생성됩니다. 이제 ActionMailer 구성부터 시작하겠습니다.

Action Mailer-구성

다음은 실제 작업을 진행하기 전에 구성을 완료하기 위해 따라야하는 단계입니다.

이메일 프로젝트의 config 폴더로 이동하여 environment.rb 파일을 열고이 파일의 맨 아래에 다음 행을 추가하십시오.

config.action_mailer.delivery_method = :smtp

ActionMailer에게 SMTP 서버를 사용할 것임을 알려줍니다. Mac OS X 또는 Linux와 같은 Unix 기반 운영 체제를 사용하는 경우 : sendmail로 설정할 수도 있습니다.

environment.rb의 맨 아래에도 다음 코드 줄을 추가하십시오.

config.action_mailer.smtp_settings = {
   address:              'smtp.gmail.com',
   port:                 587,
   domain:               'example.com',
   user_name:            '<username>',
   password:             '<password>',
   authentication:       'plain',
   enable_starttls_auto: true  
}

각 해시 값을 SMTP (Simple Mail Transfer Protocol) 서버에 대한 적절한 설정으로 바꿉니다. 이미 모르는 경우 인터넷 서비스 제공 업체에서이 정보를 가져올 수 있습니다. 표준 SMTP 서버를 사용하는 경우 포트 번호 25와 인증 유형을 변경할 필요가 없습니다.

기본 이메일 메시지 형식을 변경할 수도 있습니다. 일반 텍스트 형식 대신 HTML로 이메일을 보내려면 다음 행을 config / environment.rb에도 추가하십시오.

ActionMailer::Base.default_content_type = "text/html"

ActionMailer :: Base.default_content_type은 "text / plain", "text / html"및 "text / enriched"로 설정할 수 있습니다. 기본값은 "text / plain"입니다.

다음 단계는 메일러를 만드는 것입니다.

메일러 생성

다음 명령을 사용하여 다음과 같이 메일러를 생성하십시오-

tp> cd emails
emails> rails generate mailer Usermailer

그러면 app \ mailer 디렉토리에 user_mailer.rb 파일이 생성됩니다. 다음과 같이이 파일의 내용을 확인하십시오-

class Emailer < ActionMailer::Base
end

다음과 같이 하나의 방법을 만들어 보겠습니다.

class UserMailer < ApplicationMailer
   default from: '[email protected]'
   
   def welcome_email(user)
      @user = user
      @url  = 'http://www.gmail.com'
      mail(to: @user.email, subject: 'Welcome to My Awesome Site')
   end
   
end
  • default Hash− 이것은이 메일러에서 보내는 모든 이메일에 대한 기본값의 해시입니다. 이 경우 : from 헤더를이 클래스의 모든 메시지에 대한 값으로 설정합니다. 이메일 단위로 재정의 할 수 있습니다.

  • mail − 실제 이메일 메시지, : to 및 : subject 헤더를 전달합니다.

app / views / user_mailer /에 welcome_email.html.erb라는 파일을 만듭니다. 이것은 HTML 형식의 이메일에 사용되는 템플릿입니다.

<html>
   
   <head>
      <meta content = 'text/html; charset = UTF-8' http-equiv = 'Content-Type' />
   </head>
   
   <body>
      <h1>Welcome to example.com, <%= @user.name %></h1>
      
      <p>
         You have successfully signed up to example.com,your username is: 
         <%= @user.login %>.<br>
      </p>
      
      <p>
         To login to the site, just follow this link: 
         <%= @url %>.
      </p>
      
      <p>Thanks for joining and have a great day!</p>
      
   </body>
</html>

다음으로이 응용 프로그램에 대한 텍스트 부분을 다음과 같이 만듭니다.

Welcome to example.com, <%= @user.name %>
===============================================
 
You have successfully signed up to example.com,
your username is: <%= @user.login %>.
 
To login to the site, just follow this link: <%= @url %>.
 
Thanks for joining and have a great day!

우편물 호출

먼저 간단한 User 스캐 폴드를 만들어 보겠습니다.

$ bin/rails generate scaffold user name email login
$ bin/rake db:migrate

Action Mailer는 Active Job과 잘 통합되어 있으므로 요청-응답주기 외부에 이메일을 보낼 수 있으므로 사용자가 기다릴 필요가 없습니다.

class UsersController < ApplicationController
   # POST /users
   # POST /users.json
   def create
   @user = User.new(params[:user])
   
      respond_to do |format|
         if @user.save
            # Tell the UserMailer to send a welcome email after save
            UserMailer.welcome_email(@user).deliver_later
            
            format.html { redirect_to(@user, notice: 'User was successfully created.') }
            format.json { render json: @user, status: :created, location: @user }
         else
            format.html { render action: 'new' }
            format.json { render json: @user.errors, status: :unprocessable_entity }
         end
         
      end
      
   end
end

이제 http://127.0.0.1:3000/users/new를 사용하여 애플리케이션을 테스트합니다. 다음과 같은 화면이 표시되며이 화면을 사용하여 누구에게나 메시지를 보낼 수 있습니다.

그러면 메시지가 전송되고 "Message sent successfully"라는 텍스트 메시지가 표시되고 다음과 같이 출력됩니다.

sent mail to [email protected] (2023.Sms)
[ActiveJob] [ActionMailler::DeliveryJob] [2cfde3c-260e-4a33-1a6ada13a9b] Date: Thu, 09 Jul 2015 11:44:05 +0530
From: [email protected]
To: [email protected]
Message-Id: <[email protected]>
Subject: Welcome to My Awesome Site
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--mimepart_559e112d601c8_f1031e7f20233f5";
charset=UTF-8
Content-Transfer-Encoding:7bit

Rails를 사용하여 이메일을 보내는 방법에 대한 자세한 내용은 ActionMailer를 참조하십시오 .