[Ruby/Rails] 메일 발송 기능의 실현 방법(Gmail)
메일 발송 기능의 실현 방법
공유
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.rbrequire "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.rbclass 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_now
app/controllers/users_controller.rbclass 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. 메일 본문 작성
commandmailer $ 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.erbDear <%= @user.name %>
Thank you to join our app.
6. app/enviroments/development.편집
development.rbRails.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장
Reference
이 문제에 관하여([Ruby/Rails] 메일 발송 기능의 실현 방법(Gmail)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tanakadaichi_1989/items/82993ef2ae62a27c618d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
$ cd (directory having mail.rb)
$ ruby mail.rb
$ rails new mailer
$ cd mailer
$ rails g scaffold User name:string email:string
$ rails g mailer UserMailer send_mail
class UserMailer < ApplicationMailer
def send_mail(user)
@user = user
mail to: user.email, subject:"Sample from Rails"
end
end
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
mailer $ cd app/views/user_mailer
user_mailer cd touch send_mail.html.erb send_mail.txt.erb
<h1>Dear <%= @user.name %></h1>
<p>
Thank you to join our app.
</p>
Dear <%= @user.name %>
Thank you to join our app.
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
}
# ..省略..
$ cd mailer
$ rails s
Reference
이 문제에 관하여([Ruby/Rails] 메일 발송 기능의 실현 방법(Gmail)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanakadaichi_1989/items/82993ef2ae62a27c618d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)