覚書: Heroku SendGridでメール送信
外観
環境
macOS 10.15.4
Ruby 2.7.1
Rails 6.0.3.1
Yarn 1.22.4
Node 13.12.0
参照
Action Mailer の基礎 - Railsガイド
SendGrid | Heroku Dev Center
リポジトリ
https://github.com/usutani/try_action_mailer_heroku
アプリの作成
gem list pg
rails new -T --skip-active-storage -d postgresql try_action_mailer_heroku
cd try_action_mailer_heroku
bin/rails g scaffold User name email:uniq
bin/rails db:create
bin/rails db:migrate
config/routes.rb
Rails.application.routes.draw do
resources :users
root to: 'users#index'
end
bin/rails generate mailer UserMailer
app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer
default from: 'notifications@example.com'
def welcome_email
@user = params[:user]
@url = 'http://example.com/login'
mail(to: @user.email, subject: '私の素敵なサイトへようこそ')
end
end
touch app/views/user_mailer/welcome_email.html.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1><%= @user.name %>様、example.comへようこそ。</h1>
<p>
example.comへのサインアップが成功しました。
your username is: <%= @user.name %>.<br>
</p>
<p>
このサイトにログインするには、<%= @url %>をクリックしてください。
</p>
<p>ご入会ありがとうございます。どうぞお楽しみくださいませ。</p>
</body>
</html>
touch app/views/user_mailer/welcome_email.text.erb
<%= @user.name %>様、example.comへようこそ。
===============================================
example.comへのサインアップが成功しました。ユーザー名は「<%= @user.name %>」です。
このサイトにログインするには、<%= @url %>をクリックしてください。
本サイトにユーザー登録いただきありがとうございます。
app/controllers/users_controller.rb
UserMailer.with...を追加する。
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
UserMailer.with(user: @user).welcome_email.deliver_later
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
config/environments/production.rb
# Setup the mailer config
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'yourdomain.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
デプロイ
heroku login
heroku create <APP_NAME>
heroku addons:create sendgrid:starter
heroku addons:open sendgrid
git push heroku <BRABCH_NAME>:master
heroku run rake db:migrate
heroku open
heroku logs --tail
# heroku addons:destroy sendgrid
# heroku apps:destroy
以上です。
この記事が気に入ったらサポートをしてみませんか?