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를 참조하십시오 .