Rails5.2에서 SendGrid 사용
먼저 rails 명령으로 메일러를 만듭니다.
rails g mailer Notifications greet
:(省略)
greet이라는 메소드와 템플릿(text와 html)이 생성되고 있습니다. 이번에는 대상 주소만 인수로 받아들이도록 수정했습니다(그 외는 그대로).
app/mailers/notifications_mailer.rb
def greet(to)
@greeting = "Hi"
mail to: to
end
메일 제출 양식(mail1)과 제출 완료 페이지(mail2)를 작성합니다.
config/routes.rb
get '/mail1', to: 'pages#mail1'
post '/mail2', to: 'pages#mail2'
컨트롤러의 구현은 다음과 같습니다. 앞서 정의한 greet 메소드에 메일의 송신처를 건네주고 그대로 전달하고 있습니다.
app/controllers/pages_controller.rb
def mail1
end
def mail2
@to = params[:to]
NotificationsMailer.greet(@to).deliver_later
end
해당 뷰는 다음과 같습니다.
app/views/pages/mail1.html.erb
<%= form_tag mail2_path do %>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
To:
<%= text_field_tag :to, "", {placeholder: "[email protected]" ,size: 60} %>
<%= submit_tag 'Send email' %>
<% end %>
app/views/pages/mail2.html.erb
<p>Message was sent to <%= @to %></p>
<p><%= link_to 'Back', mail1_path %></p>
로컬의 개발 환경(development)에서는 실제로 메일은 송신되지 않고, 로그에 송신되는 메일이 출력되기 때문에, 지금까지의 설정으로 테스트가 가능할 것입니다. 그런 다음 production 환경에 SendGrid를 설정합니다. SendGrid의 대시보드에서 개인 키를 가져옵니다.
config/environments/production.rb
ActionMailer::Base.smtp_settings = {
:user_name => 'apikey',
:password => Rails.application.credentials.sendgrid_secret_key,
:domain => 'wiki.lmlab.net',
:address => 'smtp.sendgrid.net',
:port => 2525,
:authentication => :plain,
:enable_starttls_auto => true
}
sendgrid_secret_key
는 다음 명령을 사용하여 credentials.yml을 열고 씁니다. .EDITOR=vim rails credentials:edit
Reference
이 문제에 관하여(Rails5.2에서 SendGrid 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lumbermill/items/cf22ccc54206a820414b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)