Action Mailer로 메일 보내기 기능 만들기
개요
Action Mailer를 사용한 메일 발송 기능
이번 관리자의 사용자 질문에 관리자 화면에서 회답한 후
사용자에게 메일을 보내는 기능을 실현할 것이다.
학습 노트로
참고 자료
(1) RAILS GUIDES: Action Mailer의 기초
(2) [Rubbyon Rails] 메일로 보내는 설치 절차(Action Mailer)와 끼워 넣는 오류 등
(3) Rails로 메일 자동 발송 기능 만들기
(4) Rails의 Action Mailer를 통한 메일 처리
(5) Rails의 Action Mailer를 통해 메시지 보내기
Action Mailer란
Ruby on Rails에 메일 보내기 기능을 안내합니다.
Action Mailer를 사용하면 Rubi on Rails에서 메일
• 메일 잡지 동시 발송
• 사이트 회원 가입 시 thank you 메일
· 상담서 작성 내용도 관리자에게 우편으로 발송
앱에서 메일을 보내는 기능.
이것은 편리한 기능으로 응용 프로그램의 제조사 클래스나 보기에서 메일을 보낼 수 있습니다!
가져오기 단계
1. 뮬러 생성
rails 명령rails generate
을 통해 생성됩니다.연락처는 임의의 이름이다.
이번에는 상담 관련 메일 발송 기능을 만들기 위해 연락하는 사람입니다.
terminal.낳다$ rails generate mailer ContactMailer
↓
terminal.결실Running via Spring preloader in process 1893
create app/mailers/contact_mailer.rb
invoke erb
create app/views/contact_mailer
invoke rspec
create spec/mailers/contact_mailer_spec.rb
create spec/mailers/previews/contact_mailer_preview.rb
순조롭게 생성됐네요
2. 서버 설정
메일을 보낼 때 보내는 서버입니다.즉config/environments/development.rb
에서 메일 발송 설정을 기술합니다.
이번에는 gmail의 기재 방법을 사용합니다.
development.rbRails.application.configure do
#--- 中略 ---#
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 587,
address: 'smtp.gmail.com',
domain: 'gmail.com',
user_name: '<YOUR EMAIL ADDRESS>',
password: '<YOUR EMAIL PASSWORD>',
authentication: 'login',
enable_starttls_auto: true
}
end
port:
도 상기 수량을 유지할 수 있다.
위에서부터 차례대로 보다.
여기에는 매개변수config.action_mailer
에 대한 다양한 옵션이 지정되어 있습니다.
1행raise_delivery_errors
메일 발송 실패 시 오류 여부 (보내고 싶어서 정말)
행 2delivery_method
우편물의 발송 방법.기본값:smtd
이니까 신경 쓸 필요 없어요.
나처럼 "이게 뭐야!?"여러분은 아래의 인용을 읽어 주십시오.
'SMTP'는'심플 메일 트랜스퍼 프로토콜'(Simple Mail Transfer Protocol·새 메일 전송 프로토콜)의 약칭으로, 억지로 번역하려면'간단한 메일 발송 절차'죠.약속이라고 볼 수도 있고.
당신은 메일을 쓰고 수신자의 주소를 입력하며 "발송"아이콘을 눌러라.이때 당신의 스마트폰과 컴퓨터>는 이'SMTP'의 약속에 따라 당신과 계약한 메일 서버와 이런 대화를 나눈다.
"내가 메일 보낼게~""네!""수취인은 모모""양""정문은 이렇게 쓸 수밖에 없어요""받으세요!"이런 상황입니다.
출전: 메일을 통해 가장 먼저 좌절된'SMTP''POP''IMAP'를 설정합니다.그 의미 & 설정 방법은?
3행smtp_settings
smtp의 상세한 설정인 것 같아요.
$ rails generate mailer ContactMailer
Running via Spring preloader in process 1893
create app/mailers/contact_mailer.rb
invoke erb
create app/views/contact_mailer
invoke rspec
create spec/mailers/contact_mailer_spec.rb
create spec/mailers/previews/contact_mailer_preview.rb
Rails.application.configure do
#--- 中略 ---#
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 587,
address: 'smtp.gmail.com',
domain: 'gmail.com',
user_name: '<YOUR EMAIL ADDRESS>',
password: '<YOUR EMAIL PASSWORD>',
authentication: 'login',
enable_starttls_auto: true
}
end
3. 메일 편집
메일이 Rails 컨트롤러랑 비슷하네요.
보기를 사용하여 메시지 내용을 만들 수 있는'Action'이라는 방법이 있습니다.
생성 후 즉시 아래 응용 프로그램 목록입니다mailer.함께
app/mailer/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]'
layout 'mailer'
end
빈 우편물app/mailer/contact_mailer.rb
class ContactMailer < ApplicationMailer
end
있을 거야.application_mailer
sample_mailer
에 각 공장의 설치를 설치했다.application_메일 편집
app/mailer/contact_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: "管理人 <[email protected]>",
layout 'mailer'
end
일반적인 처리, 설정을 설명할 때 사용합니다defaultメソッド
.등록 정보
과업
to
목표 지정
cc
통합 전송 대상 지정
bcc
숨겨진 전송 대상 지정
from
메일 소스 이름
subject
메일 제목
date
메일 발송 시간
reply_to
답장 주소 지정
잠깐만요.
contact_mailer.편집
이번 관리자의 답장은 사용자의 이메일로 보낼 것이다.
따라서 방법을
send_when_admin_reply
로 정의한다.app/mailer/contact_mailer.rb
class ContactMailer < ApplicationMailer
def send_when_admin_reply(user, contact) #メソッドに対して引数を設定
@user = user #ユーザー情報
@answer = contact.reply_text #返信内容
mail to: user.email, subject: '【サイト名】 お問い合わせありがとうございます'
end
end
개별 설정 사용mailメソッド
.호출
send_when_replyedメソッド
시 전달된 사용자 정보에서이메일 주소만 메일의 발송 목적지로 꺼냅니다.
mailメソッド
호출 후 메일의 본문이 기재된 보기를 읽습니다.실례 변수@xxx로 메일 보기에 값을 주고 싶어서 실례 변수를 준비한 것 같아요.
이어서 나는 그 메일의 본문을 쓸 것이다
4. 메일 본문 만들기 (메일 보기 만들기)
app/views/contact_mailerディレクトリ
아래에 두 개의 파일을 만듭니다.하나는 HTML 형식이고 다른 하나는 텍스트 메시지입니다.
HTML 형식의 메일을 받지 못하는 고객도 있고/받지 않으려는 사람도 있으니 미리 텍스트 메일을 쓰는 것이 좋다.
HTML 파일 만들기
views/contact_mailer/send_when_admin_reply.html.erb
<h2><%= @user.name %> 様</h2>
<p>この度は、お問い合わせありがとうございました。<br>
以下でご質問の回答となっておりますでしょうか。</p>
<p><%= @answer %></p>
<p>今後とも XXX をよろしくお願いいたします。</p>
텍스트 파일 만들기
views/contact_mailer/send_when_admin_replyd.text.erb
===============================
<%= @user.name %> 様
===============================
この度は、お問い合わせありがとうございました。
以下でご質問の回答となっておりますでしょうか。
<%= @answer %>
今後とも XXX をよろしくお願いいたします。
5. 실제 실행 중인 동작을 메일 발송 처리하기
메일 설정만 써서 메일을 보낼 수 없습니다.
메일 (여기
application_mailer.rb
/contact_mailer.rb
은 각 컨트롤러의 동작을 통해 시작합니다.관리자는 프로그램 관리 화면 폼을 통해 답장을 보내고 그 내용을 메일로 사용자에게 보낸다.
실제 처리하는 동작은
admin/contacts_controller.rb
이다.app/controllers/contacts_controller.rb
class Admin::ContactsController < Admin::ApplicationController
def update
contact = Contact.find(params[:id]) #contact_mailer.rbの引数を指定
contact.update(contact_params)
user = contact.user
ContactMailer.send_when_admin_reply(user, contact).deliver
end
end
예를 들어 사용자가 새 계정을 등록하고 메일을 보낼 때app/controllers/users_controller.rb
class UsersController < ApplicationController
before_action :set_user
def create
if @user.save #ユーザーのインスタンスが新しく生成されて保存されたら
NotificationMailer.send_when_signup(@user).deliver #確認メールを送信
redirect_to @user
else
render 'new'
end
end
end
create 동작을 처리합니다.내 애플리케이션에서 DB 설계에서
사용자가 문의할 때 연락표에서
기록을 하나 준비했는데, 그중에 답장 한 열이 준비되었다.
따라서 업데이트 동작을 사용하십시오
기존 기록에서 관리자가 회신한 데이터만 업데이트
6. 테스트해보기
이상으로 메일을 할 수 있을 거예요·!
실제로 프로그램을 실행해 보았는데 메일을 받을 수 있다면 성공했다
이상 학습노트
Reference
이 문제에 관하여(Action Mailer로 메일 보내기 기능 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)