[Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.
개시하다
Rails에 Action Mailer를 설치할 때 letter를 사용해 보세요.opner_웹을 사용해 보았습니다.
매우 간단하고 편리하기 때문에 사용법과 회고용을 정리한 노트입니다.
※ Rails 기준에도'Mailer Preview'기능이 있는 것 같은데, 테스트용으로 구상해 제작한 것이기 때문에 이쪽 젬을 사용하기로 했습니다.
만약 잘못된 점이 있다면, 당신이 나를 지적하거나 지도할 수 있다면, 나는 매우 기쁠 것입니다.
(미해결 과제도 있고,)
Letter_opner_web
이것은 우편물을 시뮬레이션하여 수신하고 열람할 수 있는 편리한gem이다.
GiitHub이쪽
전제: 개발 환경을 위한 특수 용도
※ 시험 환경에서도 갈 수 있을 것 같은데 그게'Mailer Preview'죠(·ω・)
데모
letter_opner_홈페이지에 데모 사이트가 준비되어 있습니다.
설치하기 전에 어떤 물건인지 궁금하신 분들은 만져보세요.
demosite:http://letter-opener-web.herokuapp.com/
【사용 절차】
① 접수·열람을 위한 우편물 발송부터
다음 화면에서 [Email]과 [메시지]를 입력하고 [send mail]을 클릭하십시오!
※ 이메일이 없어도 문제 없음
② 화면 아래쪽의 성공 정보를 확인한다.
다음 그림에서 보듯이 발송에 성공했습니다.
③letter_opner_웹 페이지 화면 열기
프레젠테이션 화면의 "Click here to see sent mails"링크를 클릭, letteropner_웹 페이지에 실제 보이는 화면을 표시합니다!
또한 모든 이메일 주소에 메일 BOX가 존재하는 것이 아니라 여기서 발송된 모든 이메일 주소의 메일 내용을 확인할 수 있다.
(본격적으로 사용하면 안전 위험이 높은 것 같아요, 웃음)
④ 테스트 정보 삭제
확인이 완료되면 혹시 모르니 화면 왼쪽 상단의 [Clear] 버튼으로 메일을 삭제합니다.
이런 느낌으로 개발할 때 메일 서버 준비 등이 귀찮다면 우선letteropner_인터넷으로 해보셔도 되겠죠^^
불가능한 전자메일의 정보라도 받아들일 수 있고 간단도도 높아진다.
설정 방법(개발 환경)
다음은 letter.opner_웹 페이지의 설정 방법을 간략하게 설명하였다.
Gemfile 추가
gem 파일에 설정을 추가하고 실행하십시오 bundle install
.group :development do
gem ' letter_opener_web '、'〜> 1.0 '
end
프로파일 추가
개발 환경의 환경 설정 파일에 메일 설정을 추가합니다.
config/environments/development.rbconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
ActionMailer::Base.delivery_method = :letter_opener
라우팅 설정
화면이 있기 때문에 경로를 설정해야 한다.
아래와 같이 추가 설정을 하십시오.
config/routes.rbRails.application.routes.draw do
# 足すのは↓の行だけです!
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
end
이게 바로 레터예요.opner_웹 설정 끝났어!
초간단!나중에 아래 주소를 아시면 확인할 수 있습니다!!
letter_opner_web: http://localhost:3000/letter_opener
↓실제로 열어보면 이런느낌↓
동작 확인
설정은 되어 있지만 가능하면 메일을 보낼 수 있는지 보고 싶어요.
그러니 메일도 빨리 보내보세요.
Action Mailer 작성
콘솔에서 controller를 만들 때 같은 요령으로 Action Mailer를 만듭니다.
※ 공식 문서에는'Sample Mailer'처럼 지정된 기술이 있으며,'Mailer'부분은 생성 시 임의로 부여됩니다. 모르면 Sample Mailer Mailer처럼 아쉬운 폴더나 반을 만들 수 있으니 주의하세요. $ rails g mailer Sample
Running via Spring preloader in process 15548
create app/mailers/sample_mailer.rb
invoke haml
create app/views/sample_mailer
invoke test_unit
create test/mailers/sample_mailer_test.rb
create test/mailers/previews/sample_mailer_preview.rb
또 컨트롤러와 마찬가지로 rails d mailer Sample
도 삭제할 수 있다.
Action Mailer 편집
① 통용부
Application_mailers.rb 는 전체 Action Mailer에 적용됩니다.
초기 상태에서 다음 발송원의 메일 주소와 메일 형식을 설정했습니다.
발송 원본의 메일 주소를 변경하려면 아래default from:
를 편집하십시오.
※ 각 Mailer는 발송원을 별도로 편집할 수 있습니다
app/mailers/application_mailers.rbclass ApplicationMailer < ActionMailer::Base
default from: '[email protected]' # 送信元メールアドレス
layout 'mailer' # メール全体に適用されるメールフォーム(Viewsのapplication.html.hamlなどと共通の原理かと)
end
②SampleActionMailer
발송 방법을 정의합니다.나는 방법명은 자유롭게 결정할 수 있다고 생각한다.
이번 방법에 설정된 것은 메일 헤더 부분뿐이다.
(body부도 쓸 수 있지만 관리가 귀찮아서 기본적으로 잘라야 한다)
app/mailers/sample_mailer.rbclass SampleMailer < ApplicationMailer
attr_accessor :email,:title,:name
def sample_mail(email,title,name) #仮引数に@付きのインスタンス変数は指定できませんので注意
@email = email #インスタンス変数に格納
@title = title #インスタンス変数に格納
@name = name #インスタンス変数に格納
mail to: @email, #メールの宛先を指定
subject: "【テストメール】#{@title}" #メールのタイトルを指定
end
end
※ 모형이 사용되지 않아 아이템을 강행하지만, 보통@user 같은 경우는 그렇지 않습니다.
메일 형식 편집
메시지의 바디부는 Views 폴더 아래에 생성됩니다.rails g
명령을 사용하면 Action Mailer에 대한 폴더가 Views 폴더 아래에 생성됩니다.Action Mailer가 폴더 아래에서 만든 메서드와 동일한 이름의 파일을 만들고 body 섹션을 설명합니다.
기술 방법은 기본적으로views를 제작할 때와 같다.
(일반 텍스트와 html로 전환할 수 있지만''''만을 대상으로 한다.)
app/views/sample_mailer/sample_mail.html.haml= "#{@name}さん"
%br
%p
Hello World!!
설정 자체는 여기서 끝냅니다.
Controller 등에서 Action Mailer를 호출하면 OK.
이 부분을 살짝 접어서 콘솔에서 검증해 보세요.
※ 이번 생략, 아래 그림[4]과 같이 controller 등에 기재하면 우편물을 발송할 수 있습니다
콘솔railsc#引数を下準備
[1] pry(main)> email = "[email protected]"
=> "[email protected]"
[2] pry(main)> title = "Hello World"
=> "Hello World"
[3] pry(main)> name = "はむすけ"
=> "はむすけ"
#ActionMailerを実行してみる(最後に”.deliver”付けないと送信されません!!!)
[4] pry(main)> SampleMailer.sample_mail(email,title,name).deliver
실행 결과를 보니 어떤 순서로 읽었는지 절로 인상이 간다.
콘솔실행 결과Rendering sample_mailer/sample_mail.html.haml within layouts/mailer
Rendered sample_mailer/sample_mail.html.haml within layouts/mailer (9.2ms)
SampleMailer#sample_mail: processed outbound mail in 5075.2ms
Sent mail to [email protected] (37.0ms)
Date: Sun, 15 Sep 2019 14:23:42 +0900
From: [email protected]
To: [email protected]
Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>
Subject: =?UTF-8?Q?=E3=80=90=E3=83=86=E3=82=B9=E3=83=88=E3=83=A1=E3=83=BC=E3=83=AB=E3=80=91Hello?=
=?UTF-8?Q?_World?=
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>=0D
<html>=0D
<head>=0D
<meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-Type'>=
=0D
<style>=0D
/* Email styles need to be inline */=0D
</style>=0D
</head>=0D
<body>=0D
=E3=81=AF=E3=82=80=E3=81=99=E3=81=91=E3=81=95=E3=82=93=0D
<br>=0D
<p>=0D
Hello World!!=0D
</p>=0D
=0D
</body>=0D
</html>=0D
=> #<Mail::Message:70092500977860, Multipart: false, Headers: <Date: Sun, 15 Sep 2019 14:23:42 +0900>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>>, <Subject: 【テストメール】Hello World>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>>
결과적으로 다음 화면을 엽니다.
성공한 것 같지만 없어 rails s
그래서 letteropner_웹 페이지를 열 수 없습니다.
따라서 rails s
이후 적당한 곳에서 binding.홍보 좀 해주세요.
콘솔binding.pry 5: def index
=> 6: binding.pry
[1] pry(#<PostsController>)> email = "[email protected]"
=> "[email protected]"
[2] pry(#<PostsController>)> title = "Hello World"
=> "Hello World"
[3] pry(#<PostsController>)> name = "はむすけ"
=> "はむすけ"
[4] pry(#<PostsController>)> SampleMailer.sample_mail(email,title,name).deliver
이 상태에서 방문letter_opner_web해 보세요.이번에는 방문할 수 있을 것 같습니다.
보충(과제 포함)
letter_opner_웹은 프로젝트 단위로 메일 데이터를 유지하고 있는 것 같습니다.
위의 그림rails c
에도 시도된 메일이 남아 있어 서버 시작, 정지 등을 반복해도 사라지지 않는다.나는 프로젝트 폴더가 비대해지지 않도록 주의할 필요가 있다고 생각한다.
참고로 메일을 보내는 저장 장소는'tmp/letter opner/'의 부하입니다.
(기본값은gitignore 객체)
저장 장소를 변경하려면 initilizer에서letteropner_웹페이지 제작용 파일은 거기서 정의하면 돼.
config/initializers/letter_opner_web.rbLetterOpenerWeb.configure do |config|
config.letters_location = Rails.root.join('public', 'email')
# 上記パスの中身"#<Pathname:/Users/user-name/projects/miniblog/public/mail>"
end
※ 당사는 원활하게 설정할 수 없습니다.한번 해 봤는데 그렇습니다.
<각자의 행동>
메일 데이터 저장 위치
→ 기본 "tmp/letter opner"상태를 유지합니다.폴더가 없어져도 깨어나는 웃음
letter_opner_웹 페이지 참조처
→설정이 효과가 있나, 아무것도 보이지 않아 웃는다
개자식ωT)!!!
이렇게 생각하면 config의 설정이 순조롭지 않습니까?!rails s
시 config의 설정 상황(↓)을 확인하세요.
응, 예상대로 읽었어.지정한 경로도 cd로 갈 수 있습니다.(생각을 멈추고)
console.[1] pry(#<PostsController>)> LetterOpenerWeb.config.letters_location
=> #<Pathname:/Users/user-name/projects/miniblog/public/mail>
[2] pry(#<PostsController>)> LetterOpenerWeb.config
=> #<LetterOpenerWeb::Config:0x00007fb9d9ee2948
@letters_location=#<Pathname:/Users/user-name/projects/miniblog/public/mail>>
여기서 시간이 너무 많이 걸리기 때문에 당분간은 여기까지입니다.
조금만 더 initilizer라config라도, 앞으로 나아가는 것을 이해하면 회상해 보는 일도 있다...
총결산
나는 메일 기능을 간단하게 시험해 볼 수 있어서 정말 좋다고 생각한다.
다만, 여러 가지 시도를 거친 후에야 비로소 기초 지식이 아직 부족하다는 것을 알게 되었다^^;
앞으로도 루비와 레일스를 더 깊이 있게 이해하기 위해 노력하겠습니다.
참고 자료
GitHub:letter_opner_web
Rails 공식 가이드: Action Mailer의 기본 사항
개발 중 rails에서 보낸 메일 확인
Reference
이 문제에 관하여([Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ozackiee/items/f4d4c9b6777d9bb13ed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이것은 우편물을 시뮬레이션하여 수신하고 열람할 수 있는 편리한gem이다.
GiitHub이쪽
전제: 개발 환경을 위한 특수 용도
※ 시험 환경에서도 갈 수 있을 것 같은데 그게'Mailer Preview'죠(·ω・)
데모
letter_opner_홈페이지에 데모 사이트가 준비되어 있습니다.
설치하기 전에 어떤 물건인지 궁금하신 분들은 만져보세요.
demosite:http://letter-opener-web.herokuapp.com/
【사용 절차】
① 접수·열람을 위한 우편물 발송부터
다음 화면에서 [Email]과 [메시지]를 입력하고 [send mail]을 클릭하십시오!
※ 이메일이 없어도 문제 없음
② 화면 아래쪽의 성공 정보를 확인한다.
다음 그림에서 보듯이 발송에 성공했습니다.
③letter_opner_웹 페이지 화면 열기
프레젠테이션 화면의 "Click here to see sent mails"링크를 클릭, letteropner_웹 페이지에 실제 보이는 화면을 표시합니다!
또한 모든 이메일 주소에 메일 BOX가 존재하는 것이 아니라 여기서 발송된 모든 이메일 주소의 메일 내용을 확인할 수 있다.
(본격적으로 사용하면 안전 위험이 높은 것 같아요, 웃음)
④ 테스트 정보 삭제
확인이 완료되면 혹시 모르니 화면 왼쪽 상단의 [Clear] 버튼으로 메일을 삭제합니다.
이런 느낌으로 개발할 때 메일 서버 준비 등이 귀찮다면 우선letteropner_인터넷으로 해보셔도 되겠죠^^
불가능한 전자메일의 정보라도 받아들일 수 있고 간단도도 높아진다.
설정 방법(개발 환경)
다음은 letter.opner_웹 페이지의 설정 방법을 간략하게 설명하였다.
Gemfile 추가
gem 파일에 설정을 추가하고 실행하십시오 bundle install
.group :development do
gem ' letter_opener_web '、'〜> 1.0 '
end
프로파일 추가
개발 환경의 환경 설정 파일에 메일 설정을 추가합니다.
config/environments/development.rbconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
ActionMailer::Base.delivery_method = :letter_opener
라우팅 설정
화면이 있기 때문에 경로를 설정해야 한다.
아래와 같이 추가 설정을 하십시오.
config/routes.rbRails.application.routes.draw do
# 足すのは↓の行だけです!
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
end
이게 바로 레터예요.opner_웹 설정 끝났어!
초간단!나중에 아래 주소를 아시면 확인할 수 있습니다!!
letter_opner_web: http://localhost:3000/letter_opener
↓실제로 열어보면 이런느낌↓
동작 확인
설정은 되어 있지만 가능하면 메일을 보낼 수 있는지 보고 싶어요.
그러니 메일도 빨리 보내보세요.
Action Mailer 작성
콘솔에서 controller를 만들 때 같은 요령으로 Action Mailer를 만듭니다.
※ 공식 문서에는'Sample Mailer'처럼 지정된 기술이 있으며,'Mailer'부분은 생성 시 임의로 부여됩니다. 모르면 Sample Mailer Mailer처럼 아쉬운 폴더나 반을 만들 수 있으니 주의하세요. $ rails g mailer Sample
Running via Spring preloader in process 15548
create app/mailers/sample_mailer.rb
invoke haml
create app/views/sample_mailer
invoke test_unit
create test/mailers/sample_mailer_test.rb
create test/mailers/previews/sample_mailer_preview.rb
또 컨트롤러와 마찬가지로 rails d mailer Sample
도 삭제할 수 있다.
Action Mailer 편집
① 통용부
Application_mailers.rb 는 전체 Action Mailer에 적용됩니다.
초기 상태에서 다음 발송원의 메일 주소와 메일 형식을 설정했습니다.
발송 원본의 메일 주소를 변경하려면 아래default from:
를 편집하십시오.
※ 각 Mailer는 발송원을 별도로 편집할 수 있습니다
app/mailers/application_mailers.rbclass ApplicationMailer < ActionMailer::Base
default from: '[email protected]' # 送信元メールアドレス
layout 'mailer' # メール全体に適用されるメールフォーム(Viewsのapplication.html.hamlなどと共通の原理かと)
end
②SampleActionMailer
발송 방법을 정의합니다.나는 방법명은 자유롭게 결정할 수 있다고 생각한다.
이번 방법에 설정된 것은 메일 헤더 부분뿐이다.
(body부도 쓸 수 있지만 관리가 귀찮아서 기본적으로 잘라야 한다)
app/mailers/sample_mailer.rbclass SampleMailer < ApplicationMailer
attr_accessor :email,:title,:name
def sample_mail(email,title,name) #仮引数に@付きのインスタンス変数は指定できませんので注意
@email = email #インスタンス変数に格納
@title = title #インスタンス変数に格納
@name = name #インスタンス変数に格納
mail to: @email, #メールの宛先を指定
subject: "【テストメール】#{@title}" #メールのタイトルを指定
end
end
※ 모형이 사용되지 않아 아이템을 강행하지만, 보통@user 같은 경우는 그렇지 않습니다.
메일 형식 편집
메시지의 바디부는 Views 폴더 아래에 생성됩니다.rails g
명령을 사용하면 Action Mailer에 대한 폴더가 Views 폴더 아래에 생성됩니다.Action Mailer가 폴더 아래에서 만든 메서드와 동일한 이름의 파일을 만들고 body 섹션을 설명합니다.
기술 방법은 기본적으로views를 제작할 때와 같다.
(일반 텍스트와 html로 전환할 수 있지만''''만을 대상으로 한다.)
app/views/sample_mailer/sample_mail.html.haml= "#{@name}さん"
%br
%p
Hello World!!
설정 자체는 여기서 끝냅니다.
Controller 등에서 Action Mailer를 호출하면 OK.
이 부분을 살짝 접어서 콘솔에서 검증해 보세요.
※ 이번 생략, 아래 그림[4]과 같이 controller 등에 기재하면 우편물을 발송할 수 있습니다
콘솔railsc#引数を下準備
[1] pry(main)> email = "[email protected]"
=> "[email protected]"
[2] pry(main)> title = "Hello World"
=> "Hello World"
[3] pry(main)> name = "はむすけ"
=> "はむすけ"
#ActionMailerを実行してみる(最後に”.deliver”付けないと送信されません!!!)
[4] pry(main)> SampleMailer.sample_mail(email,title,name).deliver
실행 결과를 보니 어떤 순서로 읽었는지 절로 인상이 간다.
콘솔실행 결과Rendering sample_mailer/sample_mail.html.haml within layouts/mailer
Rendered sample_mailer/sample_mail.html.haml within layouts/mailer (9.2ms)
SampleMailer#sample_mail: processed outbound mail in 5075.2ms
Sent mail to [email protected] (37.0ms)
Date: Sun, 15 Sep 2019 14:23:42 +0900
From: [email protected]
To: [email protected]
Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>
Subject: =?UTF-8?Q?=E3=80=90=E3=83=86=E3=82=B9=E3=83=88=E3=83=A1=E3=83=BC=E3=83=AB=E3=80=91Hello?=
=?UTF-8?Q?_World?=
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>=0D
<html>=0D
<head>=0D
<meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-Type'>=
=0D
<style>=0D
/* Email styles need to be inline */=0D
</style>=0D
</head>=0D
<body>=0D
=E3=81=AF=E3=82=80=E3=81=99=E3=81=91=E3=81=95=E3=82=93=0D
<br>=0D
<p>=0D
Hello World!!=0D
</p>=0D
=0D
</body>=0D
</html>=0D
=> #<Mail::Message:70092500977860, Multipart: false, Headers: <Date: Sun, 15 Sep 2019 14:23:42 +0900>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>>, <Subject: 【テストメール】Hello World>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>>
결과적으로 다음 화면을 엽니다.
성공한 것 같지만 없어 rails s
그래서 letteropner_웹 페이지를 열 수 없습니다.
따라서 rails s
이후 적당한 곳에서 binding.홍보 좀 해주세요.
콘솔binding.pry 5: def index
=> 6: binding.pry
[1] pry(#<PostsController>)> email = "[email protected]"
=> "[email protected]"
[2] pry(#<PostsController>)> title = "Hello World"
=> "Hello World"
[3] pry(#<PostsController>)> name = "はむすけ"
=> "はむすけ"
[4] pry(#<PostsController>)> SampleMailer.sample_mail(email,title,name).deliver
이 상태에서 방문letter_opner_web해 보세요.이번에는 방문할 수 있을 것 같습니다.
보충(과제 포함)
letter_opner_웹은 프로젝트 단위로 메일 데이터를 유지하고 있는 것 같습니다.
위의 그림rails c
에도 시도된 메일이 남아 있어 서버 시작, 정지 등을 반복해도 사라지지 않는다.나는 프로젝트 폴더가 비대해지지 않도록 주의할 필요가 있다고 생각한다.
참고로 메일을 보내는 저장 장소는'tmp/letter opner/'의 부하입니다.
(기본값은gitignore 객체)
저장 장소를 변경하려면 initilizer에서letteropner_웹페이지 제작용 파일은 거기서 정의하면 돼.
config/initializers/letter_opner_web.rbLetterOpenerWeb.configure do |config|
config.letters_location = Rails.root.join('public', 'email')
# 上記パスの中身"#<Pathname:/Users/user-name/projects/miniblog/public/mail>"
end
※ 당사는 원활하게 설정할 수 없습니다.한번 해 봤는데 그렇습니다.
<각자의 행동>
메일 데이터 저장 위치
→ 기본 "tmp/letter opner"상태를 유지합니다.폴더가 없어져도 깨어나는 웃음
letter_opner_웹 페이지 참조처
→설정이 효과가 있나, 아무것도 보이지 않아 웃는다
개자식ωT)!!!
이렇게 생각하면 config의 설정이 순조롭지 않습니까?!rails s
시 config의 설정 상황(↓)을 확인하세요.
응, 예상대로 읽었어.지정한 경로도 cd로 갈 수 있습니다.(생각을 멈추고)
console.[1] pry(#<PostsController>)> LetterOpenerWeb.config.letters_location
=> #<Pathname:/Users/user-name/projects/miniblog/public/mail>
[2] pry(#<PostsController>)> LetterOpenerWeb.config
=> #<LetterOpenerWeb::Config:0x00007fb9d9ee2948
@letters_location=#<Pathname:/Users/user-name/projects/miniblog/public/mail>>
여기서 시간이 너무 많이 걸리기 때문에 당분간은 여기까지입니다.
조금만 더 initilizer라config라도, 앞으로 나아가는 것을 이해하면 회상해 보는 일도 있다...
총결산
나는 메일 기능을 간단하게 시험해 볼 수 있어서 정말 좋다고 생각한다.
다만, 여러 가지 시도를 거친 후에야 비로소 기초 지식이 아직 부족하다는 것을 알게 되었다^^;
앞으로도 루비와 레일스를 더 깊이 있게 이해하기 위해 노력하겠습니다.
참고 자료
GitHub:letter_opner_web
Rails 공식 가이드: Action Mailer의 기본 사항
개발 중 rails에서 보낸 메일 확인
Reference
이 문제에 관하여([Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ozackiee/items/f4d4c9b6777d9bb13ed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음은 letter.opner_웹 페이지의 설정 방법을 간략하게 설명하였다.
Gemfile 추가
gem 파일에 설정을 추가하고 실행하십시오
bundle install
.group :development do
gem ' letter_opener_web '、'〜> 1.0 '
end
프로파일 추가
개발 환경의 환경 설정 파일에 메일 설정을 추가합니다.
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
ActionMailer::Base.delivery_method = :letter_opener
라우팅 설정
화면이 있기 때문에 경로를 설정해야 한다.
아래와 같이 추가 설정을 하십시오.
config/routes.rb
Rails.application.routes.draw do
# 足すのは↓の行だけです!
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
end
이게 바로 레터예요.opner_웹 설정 끝났어!초간단!나중에 아래 주소를 아시면 확인할 수 있습니다!!
letter_opner_web: http://localhost:3000/letter_opener
↓실제로 열어보면 이런느낌↓
동작 확인
설정은 되어 있지만 가능하면 메일을 보낼 수 있는지 보고 싶어요.
그러니 메일도 빨리 보내보세요.
Action Mailer 작성
콘솔에서 controller를 만들 때 같은 요령으로 Action Mailer를 만듭니다.
※ 공식 문서에는'Sample Mailer'처럼 지정된 기술이 있으며,'Mailer'부분은 생성 시 임의로 부여됩니다. 모르면 Sample Mailer Mailer처럼 아쉬운 폴더나 반을 만들 수 있으니 주의하세요. $ rails g mailer Sample
Running via Spring preloader in process 15548
create app/mailers/sample_mailer.rb
invoke haml
create app/views/sample_mailer
invoke test_unit
create test/mailers/sample_mailer_test.rb
create test/mailers/previews/sample_mailer_preview.rb
또 컨트롤러와 마찬가지로 rails d mailer Sample
도 삭제할 수 있다.
Action Mailer 편집
① 통용부
Application_mailers.rb 는 전체 Action Mailer에 적용됩니다.
초기 상태에서 다음 발송원의 메일 주소와 메일 형식을 설정했습니다.
발송 원본의 메일 주소를 변경하려면 아래default from:
를 편집하십시오.
※ 각 Mailer는 발송원을 별도로 편집할 수 있습니다
app/mailers/application_mailers.rbclass ApplicationMailer < ActionMailer::Base
default from: '[email protected]' # 送信元メールアドレス
layout 'mailer' # メール全体に適用されるメールフォーム(Viewsのapplication.html.hamlなどと共通の原理かと)
end
②SampleActionMailer
발송 방법을 정의합니다.나는 방법명은 자유롭게 결정할 수 있다고 생각한다.
이번 방법에 설정된 것은 메일 헤더 부분뿐이다.
(body부도 쓸 수 있지만 관리가 귀찮아서 기본적으로 잘라야 한다)
app/mailers/sample_mailer.rbclass SampleMailer < ApplicationMailer
attr_accessor :email,:title,:name
def sample_mail(email,title,name) #仮引数に@付きのインスタンス変数は指定できませんので注意
@email = email #インスタンス変数に格納
@title = title #インスタンス変数に格納
@name = name #インスタンス変数に格納
mail to: @email, #メールの宛先を指定
subject: "【テストメール】#{@title}" #メールのタイトルを指定
end
end
※ 모형이 사용되지 않아 아이템을 강행하지만, 보통@user 같은 경우는 그렇지 않습니다.
메일 형식 편집
메시지의 바디부는 Views 폴더 아래에 생성됩니다.rails g
명령을 사용하면 Action Mailer에 대한 폴더가 Views 폴더 아래에 생성됩니다.Action Mailer가 폴더 아래에서 만든 메서드와 동일한 이름의 파일을 만들고 body 섹션을 설명합니다.
기술 방법은 기본적으로views를 제작할 때와 같다.
(일반 텍스트와 html로 전환할 수 있지만''''만을 대상으로 한다.)
app/views/sample_mailer/sample_mail.html.haml= "#{@name}さん"
%br
%p
Hello World!!
설정 자체는 여기서 끝냅니다.
Controller 등에서 Action Mailer를 호출하면 OK.
이 부분을 살짝 접어서 콘솔에서 검증해 보세요.
※ 이번 생략, 아래 그림[4]과 같이 controller 등에 기재하면 우편물을 발송할 수 있습니다
콘솔railsc#引数を下準備
[1] pry(main)> email = "[email protected]"
=> "[email protected]"
[2] pry(main)> title = "Hello World"
=> "Hello World"
[3] pry(main)> name = "はむすけ"
=> "はむすけ"
#ActionMailerを実行してみる(最後に”.deliver”付けないと送信されません!!!)
[4] pry(main)> SampleMailer.sample_mail(email,title,name).deliver
실행 결과를 보니 어떤 순서로 읽었는지 절로 인상이 간다.
콘솔실행 결과Rendering sample_mailer/sample_mail.html.haml within layouts/mailer
Rendered sample_mailer/sample_mail.html.haml within layouts/mailer (9.2ms)
SampleMailer#sample_mail: processed outbound mail in 5075.2ms
Sent mail to [email protected] (37.0ms)
Date: Sun, 15 Sep 2019 14:23:42 +0900
From: [email protected]
To: [email protected]
Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>
Subject: =?UTF-8?Q?=E3=80=90=E3=83=86=E3=82=B9=E3=83=88=E3=83=A1=E3=83=BC=E3=83=AB=E3=80=91Hello?=
=?UTF-8?Q?_World?=
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>=0D
<html>=0D
<head>=0D
<meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-Type'>=
=0D
<style>=0D
/* Email styles need to be inline */=0D
</style>=0D
</head>=0D
<body>=0D
=E3=81=AF=E3=82=80=E3=81=99=E3=81=91=E3=81=95=E3=82=93=0D
<br>=0D
<p>=0D
Hello World!!=0D
</p>=0D
=0D
</body>=0D
</html>=0D
=> #<Mail::Message:70092500977860, Multipart: false, Headers: <Date: Sun, 15 Sep 2019 14:23:42 +0900>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>>, <Subject: 【テストメール】Hello World>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>>
결과적으로 다음 화면을 엽니다.
성공한 것 같지만 없어 rails s
그래서 letteropner_웹 페이지를 열 수 없습니다.
따라서 rails s
이후 적당한 곳에서 binding.홍보 좀 해주세요.
콘솔binding.pry 5: def index
=> 6: binding.pry
[1] pry(#<PostsController>)> email = "[email protected]"
=> "[email protected]"
[2] pry(#<PostsController>)> title = "Hello World"
=> "Hello World"
[3] pry(#<PostsController>)> name = "はむすけ"
=> "はむすけ"
[4] pry(#<PostsController>)> SampleMailer.sample_mail(email,title,name).deliver
이 상태에서 방문letter_opner_web해 보세요.이번에는 방문할 수 있을 것 같습니다.
보충(과제 포함)
letter_opner_웹은 프로젝트 단위로 메일 데이터를 유지하고 있는 것 같습니다.
위의 그림rails c
에도 시도된 메일이 남아 있어 서버 시작, 정지 등을 반복해도 사라지지 않는다.나는 프로젝트 폴더가 비대해지지 않도록 주의할 필요가 있다고 생각한다.
참고로 메일을 보내는 저장 장소는'tmp/letter opner/'의 부하입니다.
(기본값은gitignore 객체)
저장 장소를 변경하려면 initilizer에서letteropner_웹페이지 제작용 파일은 거기서 정의하면 돼.
config/initializers/letter_opner_web.rbLetterOpenerWeb.configure do |config|
config.letters_location = Rails.root.join('public', 'email')
# 上記パスの中身"#<Pathname:/Users/user-name/projects/miniblog/public/mail>"
end
※ 당사는 원활하게 설정할 수 없습니다.한번 해 봤는데 그렇습니다.
<각자의 행동>
메일 데이터 저장 위치
→ 기본 "tmp/letter opner"상태를 유지합니다.폴더가 없어져도 깨어나는 웃음
letter_opner_웹 페이지 참조처
→설정이 효과가 있나, 아무것도 보이지 않아 웃는다
개자식ωT)!!!
이렇게 생각하면 config의 설정이 순조롭지 않습니까?!rails s
시 config의 설정 상황(↓)을 확인하세요.
응, 예상대로 읽었어.지정한 경로도 cd로 갈 수 있습니다.(생각을 멈추고)
console.[1] pry(#<PostsController>)> LetterOpenerWeb.config.letters_location
=> #<Pathname:/Users/user-name/projects/miniblog/public/mail>
[2] pry(#<PostsController>)> LetterOpenerWeb.config
=> #<LetterOpenerWeb::Config:0x00007fb9d9ee2948
@letters_location=#<Pathname:/Users/user-name/projects/miniblog/public/mail>>
여기서 시간이 너무 많이 걸리기 때문에 당분간은 여기까지입니다.
조금만 더 initilizer라config라도, 앞으로 나아가는 것을 이해하면 회상해 보는 일도 있다...
총결산
나는 메일 기능을 간단하게 시험해 볼 수 있어서 정말 좋다고 생각한다.
다만, 여러 가지 시도를 거친 후에야 비로소 기초 지식이 아직 부족하다는 것을 알게 되었다^^;
앞으로도 루비와 레일스를 더 깊이 있게 이해하기 위해 노력하겠습니다.
참고 자료
GitHub:letter_opner_web
Rails 공식 가이드: Action Mailer의 기본 사항
개발 중 rails에서 보낸 메일 확인
Reference
이 문제에 관하여([Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ozackiee/items/f4d4c9b6777d9bb13ed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails g mailer Sample
Running via Spring preloader in process 15548
create app/mailers/sample_mailer.rb
invoke haml
create app/views/sample_mailer
invoke test_unit
create test/mailers/sample_mailer_test.rb
create test/mailers/previews/sample_mailer_preview.rb
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]' # 送信元メールアドレス
layout 'mailer' # メール全体に適用されるメールフォーム(Viewsのapplication.html.hamlなどと共通の原理かと)
end
class SampleMailer < ApplicationMailer
attr_accessor :email,:title,:name
def sample_mail(email,title,name) #仮引数に@付きのインスタンス変数は指定できませんので注意
@email = email #インスタンス変数に格納
@title = title #インスタンス変数に格納
@name = name #インスタンス変数に格納
mail to: @email, #メールの宛先を指定
subject: "【テストメール】#{@title}" #メールのタイトルを指定
end
end
= "#{@name}さん"
%br
%p
Hello World!!
#引数を下準備
[1] pry(main)> email = "[email protected]"
=> "[email protected]"
[2] pry(main)> title = "Hello World"
=> "Hello World"
[3] pry(main)> name = "はむすけ"
=> "はむすけ"
#ActionMailerを実行してみる(最後に”.deliver”付けないと送信されません!!!)
[4] pry(main)> SampleMailer.sample_mail(email,title,name).deliver
Rendering sample_mailer/sample_mail.html.haml within layouts/mailer
Rendered sample_mailer/sample_mail.html.haml within layouts/mailer (9.2ms)
SampleMailer#sample_mail: processed outbound mail in 5075.2ms
Sent mail to [email protected] (37.0ms)
Date: Sun, 15 Sep 2019 14:23:42 +0900
From: [email protected]
To: [email protected]
Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>
Subject: =?UTF-8?Q?=E3=80=90=E3=83=86=E3=82=B9=E3=83=88=E3=83=A1=E3=83=BC=E3=83=AB=E3=80=91Hello?=
=?UTF-8?Q?_World?=
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>=0D
<html>=0D
<head>=0D
<meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-Type'>=
=0D
<style>=0D
/* Email styles need to be inline */=0D
</style>=0D
</head>=0D
<body>=0D
=E3=81=AF=E3=82=80=E3=81=99=E3=81=91=E3=81=95=E3=82=93=0D
<br>=0D
<p>=0D
Hello World!!=0D
</p>=0D
=0D
</body>=0D
</html>=0D
=> #<Mail::Message:70092500977860, Multipart: false, Headers: <Date: Sun, 15 Sep 2019 14:23:42 +0900>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <5d7dcade41695_3f143fbfadc14e5c744d@user-nameMacBook-Air.local.mail>>, <Subject: 【テストメール】Hello World>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>>
5: def index
=> 6: binding.pry
[1] pry(#<PostsController>)> email = "[email protected]"
=> "[email protected]"
[2] pry(#<PostsController>)> title = "Hello World"
=> "Hello World"
[3] pry(#<PostsController>)> name = "はむすけ"
=> "はむすけ"
[4] pry(#<PostsController>)> SampleMailer.sample_mail(email,title,name).deliver
letter_opner_웹은 프로젝트 단위로 메일 데이터를 유지하고 있는 것 같습니다.
위의 그림
rails c
에도 시도된 메일이 남아 있어 서버 시작, 정지 등을 반복해도 사라지지 않는다.나는 프로젝트 폴더가 비대해지지 않도록 주의할 필요가 있다고 생각한다.참고로 메일을 보내는 저장 장소는'tmp/letter opner/'의 부하입니다.
(기본값은gitignore 객체)
저장 장소를 변경하려면 initilizer에서letteropner_웹페이지 제작용 파일은 거기서 정의하면 돼.
config/initializers/letter_opner_web.rb
LetterOpenerWeb.configure do |config|
config.letters_location = Rails.root.join('public', 'email')
# 上記パスの中身"#<Pathname:/Users/user-name/projects/miniblog/public/mail>"
end
※ 당사는 원활하게 설정할 수 없습니다.한번 해 봤는데 그렇습니다.<각자의 행동>
메일 데이터 저장 위치
→ 기본 "tmp/letter opner"상태를 유지합니다.폴더가 없어져도 깨어나는 웃음
letter_opner_웹 페이지 참조처
→설정이 효과가 있나, 아무것도 보이지 않아 웃는다
개자식ωT)!!!
이렇게 생각하면 config의 설정이 순조롭지 않습니까?!
rails s
시 config의 설정 상황(↓)을 확인하세요.응, 예상대로 읽었어.지정한 경로도 cd로 갈 수 있습니다.(생각을 멈추고)
console.
[1] pry(#<PostsController>)> LetterOpenerWeb.config.letters_location
=> #<Pathname:/Users/user-name/projects/miniblog/public/mail>
[2] pry(#<PostsController>)> LetterOpenerWeb.config
=> #<LetterOpenerWeb::Config:0x00007fb9d9ee2948
@letters_location=#<Pathname:/Users/user-name/projects/miniblog/public/mail>>
여기서 시간이 너무 많이 걸리기 때문에 당분간은 여기까지입니다.조금만 더 initilizer라config라도, 앞으로 나아가는 것을 이해하면 회상해 보는 일도 있다...
총결산
나는 메일 기능을 간단하게 시험해 볼 수 있어서 정말 좋다고 생각한다.
다만, 여러 가지 시도를 거친 후에야 비로소 기초 지식이 아직 부족하다는 것을 알게 되었다^^;
앞으로도 루비와 레일스를 더 깊이 있게 이해하기 위해 노력하겠습니다.
참고 자료
GitHub:letter_opner_web
Rails 공식 가이드: Action Mailer의 기본 사항
개발 중 rails에서 보낸 메일 확인
Reference
이 문제에 관하여([Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ozackiee/items/f4d4c9b6777d9bb13ed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GitHub:letter_opner_web
Rails 공식 가이드: Action Mailer의 기본 사항
개발 중 rails에서 보낸 메일 확인
Reference
이 문제에 관하여([Rails] Action Mailer를 설치할 때 Letter Opner Web은 매우 편리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ozackiee/items/f4d4c9b6777d9bb13ed7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)