Customers Mail CloudをRuby on Railsプロジェクトの中で利用する方法を解説します。Ruby on Rails標準のActionMailerを使って、簡易的なお問い合わせフォームを作成してみます。コードは【Ruby on Rails】お問合せフォームの作成 - Qiitaを参考にしています。
ベースプロジェクト生成
まずベースになるRailsプロジェクトを生成します。
$ rails new contact_form
必要なライブラリをインストールします。
$ cd contact_form $ bundle install
メールオブジェクトを生成
railsコマンドを使ってメールオブジェクトを生成します。
$ rails g mailer ContactMailer
app/mailers/contact_mailer.rb を編集します。 from や to は必要なものに書き換えてください。
class ContactMailer < ApplicationMailer
def send_mail(contact)
@contact = contact
mail from: 'info@smtps.jp', to: 'no-reply@smtps.jp', subject: 'お問い合わせ'
end
end
モデルの作成
Railsのモデルを作成します。これは絶対必要な訳ではありませんが、あった方がテンプレートなどでの扱いが楽になります。
$ rails g model Contact name:string email:string message:text
そしてDBスキーマに反映します。
$ rake db:migrate
config/environments/development.rbの編集
config/environments/development.rbを編集してメール送信できるようにします。
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 10025,
address: 'YOUR_SMTPS_ADDRESS',
user_name: 'YOUR_USER_ID',
password: 'YOUR_API_KEY',
enable_starttls_auto: true
}
YOUR_SMTPS_ADDRESSは契約によって異なります。SUBDOMAINは契約によって異なりますので注意してください。 YOUR_USER_ID 、 YOUR_API_KEYはご自身のものを設定してください。
| 利用プラン | アドレス |
|---|---|
| sandbox | sandbox.smtps.jp |
| pro | SUBDOMAIN.smtps.jp |
コントローラの作成
次にコントロールを作成します。
$ rails g controller contacts
app/controllers/contacts_controller.rb の内容は次のようになります。
class Public::ContactsController < ApplicationController
# お問い合わせフォーム表示
def new
@contact = Contact.new
end
# メール送信
def create
@contact = Contact.new(contact_params)
if @contact.save
ContactMailer.send_mail(@contact).deliver_now
redirect_to done_path
else
render :new
end
end
# 完了ページ表示用
def done
end
private
def contact_params
params.require(:contact)
.permit(:email,
:name,
:message
)
end
end
ルーティングの編集
config/routes.rb を編集します。
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
resources :contacts, only: [:new, :create]
get 'done', to: 'contacts#done', as: 'done'
# Defines the root path route ("/")
# root "articles#index"
end
ビューの作成
メール用
まずメール用のビューを作成します。ファイルは views/contact_mailer/send_mail.text.erb になります。
<%= @contact.name %> 様からの問い合わせ メールアドレス:<%= @contact.email %> 問い合わせ内容: <%= @contact.message %>
お問い合わせ入力用
ファイルは app/views/contacts/new.html.erb になります。
<%= form_for(@contact, url: contacts_path) do |f| %>
<div class="form-group">
<%= f.label :name, 'お名前*' %>
<%= f.text_field :name, autofocus: true, class: 'form-control' %>
</div>
<br />
<div class="form-group">
<%= f.label :email, 'メールアドレス*' %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<br />
<div class="form-group">
<%= f.label :message, 'メッセージ*' %>
<%= f.text_area :message, size: '10x10', class: 'form-control' %>
</div>
<br />
<div>
<%= f.submit '送信する' %>
</div>
<% end %>
お問い合わせ完了時用
ファイルは app/views/contacts/done.html.erb になります。
<h1>お問い合わせいただきありがとうございます</h1>
レイアウトの編集
レイアウト用の app/views/layouts/application.html.erb にBootstrap用のCSSを追加します。
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
これで作成完了です。
試してみる
まず http://localhost:3000/contacts/new にアクセスします。お問い合わせフォームが表示されるはずです。

お問い合わせ内容を入力して、送信ボタンを押します。完了メッセージが出れば完成です。

メールはCustomers Mail Cloudを経由しているので、メールボックスに問題なく届くはずです。

まとめ
Railsアプリケーションであれば、SMTPサーバの設定を変えるだけですぐにCustomers Mail Cloudを利用できます。ぜひ皆さんのRailsアプリの中で活用してください。
