개발 중 rails에서 보낸 메일 확인
15371 단어 Rails
배경.
rails 앱에서 메일을 보내는 것은 간단하지만 개발 과정에서 메일을 보내는 것을 확인하고 싶다면 어떻게 해야 하나요?
이번에는 rails 앱 개발에서 메일을 확인하는 방법을 소개한다.
차리다
이번에는 메일 확인의 예로 devise 메일 인증이 필요한 사용자 로그인 구조를 사용할 예정이다.
devise 설치
rails 응용 프로그램으로 초기화
Gemfile에 devise를 추가하여 설치합니다.bundle exec rails generate devise:install
bundle exec rails generate devise user
bundle exec rails generate devise:views users
생성된view를 읽도록 설정합니다.Devise.setup do |config|
# 中略
config.scoped_views = true
end
모델에서 메일 인증을 사용합니다.class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
end
메일 인증 관련 부분의migration도 변경됩니다.class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, :null => false, :default => ""
t.string :encrypted_password, :null => false, :default => ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, :default => 0, :null => false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end
end
config/environments/development.rb
설정도 잊지 말자. config.action_mailer.default_url_options = { host: 'localhost:3000' }
이렇게 하면 rails 서버를 시작할 수 있고 방문http://localhost:3000/users/sign_up
하면 사용자 로그인이 가능하기 때문에 메일을 보낼 수 있습니다.
콘솔에서 확인
rails 서버를 시작하는 컨트롤러를 보고 메일로 보낸 로그를 출력합니다.Sent mail to [email protected] (12.1ms)
Date: Wed, 06 Nov 2013 10:05:01 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome [email protected]!</p>
<p>You can confirm your account email through the link below:</p>
<p><a href="http://localhost:3000/users/confirmation?confirmation_token=Ewx4qYxPR4Ex9yqySYEJ">Confirm my account</a></p>
(0.7ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 927ms (ActiveRecord: 3.9ms)
메일을 보낸 내용을 조금 바꾸자.app/views/users/mailer/confirmaion_instructions.html.erb
<p>ようこそ <%= @email %> さん!</p>
<p>下のリンクからユーザー登録を完了してください</p>
<p><%= link_to 'ユーザー登録を完了する', confirmation_url(@resource, :confirmation_token => @token) %></p>
다시 한 번 메일을 보내서 콘솔에서 확인해 보세요.Sent mail to [email protected] (40.4ms)
Date: Wed, 06 Nov 2013 10:09:10 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: base64
PHA+44KI44GG44GT44GdIGZ1Z2FAZW1haWwuY29tIOOBleOCkyE8L3A+Cgo8
cD7kuIvjga7jg6rjg7Pjgq/jgYvjgonjg6bjg7zjgrbjg7znmbvpjLLjgpLl
rozkuobjgZfjgabjgY/jgaDjgZXjgYQ8L3A+Cgo8cD48YSBocmVmPSJodHRw
Oi8vbG9jYWxob3N0OjMwMDAvdXNlcnMvY29uZmlybWF0aW9uP2NvbmZpcm1h
dGlvbl90b2tlbj14b2EzeTR2OTlpOExZQ3hycWRvTSI+44Om44O844K244O8
55m76Yyy44KS5a6M5LqG44GZ44KLPC9hPjwvcD4K
(7.2ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 148ms (ActiveRecord: 8.1ms)
인코딩되었으므로 confirmation--Token이 있는 링크를 확인할 수 없습니다.
원래 컨트롤러에서 메일의 내용을 확인하는 것은 매우 번거롭다.
letter_opener
첫 번째 메일 확인 방법은letter_opener입니다.
Gemfile 위 letterOpener를 추가하고 설치합니다.group :development do
gem 'letter_opener'
end
config/environments/development.rb
에 한 줄config.action_mailer.delivery_method = :letter_opener
을 추가합니다. config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener
이렇게 메일을 보낼 때(이번은 사용자가 로그인할 때) 브라우저에서 메일을 확인할 수 있다.
그리고 letter_opener_web의gem.
이것도 Gemfile에 추가합니다.group :development do
gem 'letter_opener_web'
end
config/environments/development.rb
의 config.action_mailer.delivery_method
를 :letter_opener_web
로 변경 config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener_web
config/routes.rb
에 마운트/letter_opener
하면 됩니다.Your::Application.routes.draw do
devise_for :users
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
end
이렇게 하면 방문LetterOpenerWeb::Engine
을 통해 발송된 우편물을 확인할 수 있다.
mailcatcher
또 다른 방법은mailcatcher이다.
아까 letter오픈러는 rails 프로그램에 편입되었지만 메일catcher는 독립적으로 실행되는 개발용 SMTP 서버입니다.
gem분배를 통해 설치가 간단합니다.gem install mailcatcher
http://localhost:3000/letter_opener
명령을 사용하여 시작합니다. 기본적으로 백그라운드에서 시작합니다mailcatcher
.
시작 옵션을 사용하여 적절한 변경을 수행할 수도 있습니다.Usage: mailcatcher [options]
--ip IP Set the ip address of both servers
--smtp-ip IP Set the ip address of the smtp server
--smtp-port PORT Set the port of the smtp server
--http-ip IP Set the ip address of the http server
--http-port PORT Set the port address of the http server
--[no-]growl Growl to the local machine when a message arrives
-f, --foreground Run in the foreground
-b, --browse Open web browser
-v, --verbose Be more verbose
-h, --help Display this help information
rails 응용 프로그램과 연합할 때 smtp://localhost:1025
의config/environments/development.rb
에서 설정합니다. config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
이후 방문config.action_mailer.smtp_settings
하면 우편물을 확인할 수 있다.
총결산
어떤 방법이든 개발 환경에서 확인 메일을 살짝 설정할 수 있기 때문에 rails 앱에서 메일을 보내는 기능을 확인할 때도 사용할 수 있다.
Reference
이 문제에 관하여(개발 중 rails에서 보낸 메일 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k-shogo/items/d85905535a64e82a3b2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 메일 확인의 예로 devise 메일 인증이 필요한 사용자 로그인 구조를 사용할 예정이다.
devise 설치
rails 응용 프로그램으로 초기화
Gemfile에 devise를 추가하여 설치합니다.
bundle exec rails generate devise:install
bundle exec rails generate devise user
bundle exec rails generate devise:views users
생성된view를 읽도록 설정합니다.Devise.setup do |config|
# 中略
config.scoped_views = true
end
모델에서 메일 인증을 사용합니다.class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
end
메일 인증 관련 부분의migration도 변경됩니다.class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, :null => false, :default => ""
t.string :encrypted_password, :null => false, :default => ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, :default => 0, :null => false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end
end
config/environments/development.rb
설정도 잊지 말자. config.action_mailer.default_url_options = { host: 'localhost:3000' }
이렇게 하면 rails 서버를 시작할 수 있고 방문http://localhost:3000/users/sign_up
하면 사용자 로그인이 가능하기 때문에 메일을 보낼 수 있습니다.콘솔에서 확인
rails 서버를 시작하는 컨트롤러를 보고 메일로 보낸 로그를 출력합니다.Sent mail to [email protected] (12.1ms)
Date: Wed, 06 Nov 2013 10:05:01 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome [email protected]!</p>
<p>You can confirm your account email through the link below:</p>
<p><a href="http://localhost:3000/users/confirmation?confirmation_token=Ewx4qYxPR4Ex9yqySYEJ">Confirm my account</a></p>
(0.7ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 927ms (ActiveRecord: 3.9ms)
메일을 보낸 내용을 조금 바꾸자.app/views/users/mailer/confirmaion_instructions.html.erb
<p>ようこそ <%= @email %> さん!</p>
<p>下のリンクからユーザー登録を完了してください</p>
<p><%= link_to 'ユーザー登録を完了する', confirmation_url(@resource, :confirmation_token => @token) %></p>
다시 한 번 메일을 보내서 콘솔에서 확인해 보세요.Sent mail to [email protected] (40.4ms)
Date: Wed, 06 Nov 2013 10:09:10 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: base64
PHA+44KI44GG44GT44GdIGZ1Z2FAZW1haWwuY29tIOOBleOCkyE8L3A+Cgo8
cD7kuIvjga7jg6rjg7Pjgq/jgYvjgonjg6bjg7zjgrbjg7znmbvpjLLjgpLl
rozkuobjgZfjgabjgY/jgaDjgZXjgYQ8L3A+Cgo8cD48YSBocmVmPSJodHRw
Oi8vbG9jYWxob3N0OjMwMDAvdXNlcnMvY29uZmlybWF0aW9uP2NvbmZpcm1h
dGlvbl90b2tlbj14b2EzeTR2OTlpOExZQ3hycWRvTSI+44Om44O844K244O8
55m76Yyy44KS5a6M5LqG44GZ44KLPC9hPjwvcD4K
(7.2ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 148ms (ActiveRecord: 8.1ms)
인코딩되었으므로 confirmation--Token이 있는 링크를 확인할 수 없습니다.
원래 컨트롤러에서 메일의 내용을 확인하는 것은 매우 번거롭다.
letter_opener
첫 번째 메일 확인 방법은letter_opener입니다.
Gemfile 위 letterOpener를 추가하고 설치합니다.group :development do
gem 'letter_opener'
end
config/environments/development.rb
에 한 줄config.action_mailer.delivery_method = :letter_opener
을 추가합니다. config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener
이렇게 메일을 보낼 때(이번은 사용자가 로그인할 때) 브라우저에서 메일을 확인할 수 있다.
그리고 letter_opener_web의gem.
이것도 Gemfile에 추가합니다.group :development do
gem 'letter_opener_web'
end
config/environments/development.rb
의 config.action_mailer.delivery_method
를 :letter_opener_web
로 변경 config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener_web
config/routes.rb
에 마운트/letter_opener
하면 됩니다.Your::Application.routes.draw do
devise_for :users
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
end
이렇게 하면 방문LetterOpenerWeb::Engine
을 통해 발송된 우편물을 확인할 수 있다.
mailcatcher
또 다른 방법은mailcatcher이다.
아까 letter오픈러는 rails 프로그램에 편입되었지만 메일catcher는 독립적으로 실행되는 개발용 SMTP 서버입니다.
gem분배를 통해 설치가 간단합니다.gem install mailcatcher
http://localhost:3000/letter_opener
명령을 사용하여 시작합니다. 기본적으로 백그라운드에서 시작합니다mailcatcher
.
시작 옵션을 사용하여 적절한 변경을 수행할 수도 있습니다.Usage: mailcatcher [options]
--ip IP Set the ip address of both servers
--smtp-ip IP Set the ip address of the smtp server
--smtp-port PORT Set the port of the smtp server
--http-ip IP Set the ip address of the http server
--http-port PORT Set the port address of the http server
--[no-]growl Growl to the local machine when a message arrives
-f, --foreground Run in the foreground
-b, --browse Open web browser
-v, --verbose Be more verbose
-h, --help Display this help information
rails 응용 프로그램과 연합할 때 smtp://localhost:1025
의config/environments/development.rb
에서 설정합니다. config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
이후 방문config.action_mailer.smtp_settings
하면 우편물을 확인할 수 있다.
총결산
어떤 방법이든 개발 환경에서 확인 메일을 살짝 설정할 수 있기 때문에 rails 앱에서 메일을 보내는 기능을 확인할 때도 사용할 수 있다.
Reference
이 문제에 관하여(개발 중 rails에서 보낸 메일 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k-shogo/items/d85905535a64e82a3b2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Sent mail to [email protected] (12.1ms)
Date: Wed, 06 Nov 2013 10:05:01 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome [email protected]!</p>
<p>You can confirm your account email through the link below:</p>
<p><a href="http://localhost:3000/users/confirmation?confirmation_token=Ewx4qYxPR4Ex9yqySYEJ">Confirm my account</a></p>
(0.7ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 927ms (ActiveRecord: 3.9ms)
<p>ようこそ <%= @email %> さん!</p>
<p>下のリンクからユーザー登録を完了してください</p>
<p><%= link_to 'ユーザー登録を完了する', confirmation_url(@resource, :confirmation_token => @token) %></p>
Sent mail to [email protected] (40.4ms)
Date: Wed, 06 Nov 2013 10:09:10 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: base64
PHA+44KI44GG44GT44GdIGZ1Z2FAZW1haWwuY29tIOOBleOCkyE8L3A+Cgo8
cD7kuIvjga7jg6rjg7Pjgq/jgYvjgonjg6bjg7zjgrbjg7znmbvpjLLjgpLl
rozkuobjgZfjgabjgY/jgaDjgZXjgYQ8L3A+Cgo8cD48YSBocmVmPSJodHRw
Oi8vbG9jYWxob3N0OjMwMDAvdXNlcnMvY29uZmlybWF0aW9uP2NvbmZpcm1h
dGlvbl90b2tlbj14b2EzeTR2OTlpOExZQ3hycWRvTSI+44Om44O844K244O8
55m76Yyy44KS5a6M5LqG44GZ44KLPC9hPjwvcD4K
(7.2ms) commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 148ms (ActiveRecord: 8.1ms)
첫 번째 메일 확인 방법은letter_opener입니다.
Gemfile 위 letterOpener를 추가하고 설치합니다.
group :development do
gem 'letter_opener'
end
config/environments/development.rb
에 한 줄config.action_mailer.delivery_method = :letter_opener
을 추가합니다. config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener
이렇게 메일을 보낼 때(이번은 사용자가 로그인할 때) 브라우저에서 메일을 확인할 수 있다.그리고 letter_opener_web의gem.
이것도 Gemfile에 추가합니다.
group :development do
gem 'letter_opener_web'
end
config/environments/development.rb
의 config.action_mailer.delivery_method
를 :letter_opener_web
로 변경 config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener_web
config/routes.rb
에 마운트/letter_opener
하면 됩니다.Your::Application.routes.draw do
devise_for :users
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
end
이렇게 하면 방문LetterOpenerWeb::Engine
을 통해 발송된 우편물을 확인할 수 있다.mailcatcher
또 다른 방법은mailcatcher이다.
아까 letter오픈러는 rails 프로그램에 편입되었지만 메일catcher는 독립적으로 실행되는 개발용 SMTP 서버입니다.
gem분배를 통해 설치가 간단합니다.gem install mailcatcher
http://localhost:3000/letter_opener
명령을 사용하여 시작합니다. 기본적으로 백그라운드에서 시작합니다mailcatcher
.
시작 옵션을 사용하여 적절한 변경을 수행할 수도 있습니다.Usage: mailcatcher [options]
--ip IP Set the ip address of both servers
--smtp-ip IP Set the ip address of the smtp server
--smtp-port PORT Set the port of the smtp server
--http-ip IP Set the ip address of the http server
--http-port PORT Set the port address of the http server
--[no-]growl Growl to the local machine when a message arrives
-f, --foreground Run in the foreground
-b, --browse Open web browser
-v, --verbose Be more verbose
-h, --help Display this help information
rails 응용 프로그램과 연합할 때 smtp://localhost:1025
의config/environments/development.rb
에서 설정합니다. config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
이후 방문config.action_mailer.smtp_settings
하면 우편물을 확인할 수 있다.
총결산
어떤 방법이든 개발 환경에서 확인 메일을 살짝 설정할 수 있기 때문에 rails 앱에서 메일을 보내는 기능을 확인할 때도 사용할 수 있다.
Reference
이 문제에 관하여(개발 중 rails에서 보낸 메일 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k-shogo/items/d85905535a64e82a3b2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gem install mailcatcher
Usage: mailcatcher [options]
--ip IP Set the ip address of both servers
--smtp-ip IP Set the ip address of the smtp server
--smtp-port PORT Set the port of the smtp server
--http-ip IP Set the ip address of the http server
--http-port PORT Set the port address of the http server
--[no-]growl Growl to the local machine when a message arrives
-f, --foreground Run in the foreground
-b, --browse Open web browser
-v, --verbose Be more verbose
-h, --help Display this help information
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
Reference
이 문제에 관하여(개발 중 rails에서 보낸 메일 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-shogo/items/d85905535a64e82a3b2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)