[Ruby on Rails] お問い合わせフォームの内容を自分のメールアドレス(Gmail)に送信させる方法!

今回はお問い合わせフォームの内容をGmailで自分のメールアドレスに送信させる方法をまとめてみました。

メモ

Ruby on Railsに標準搭載されているaction mailerを使用してお問い合わせフォームを実装していきます。

1.contactモデルを作成する

まず始めにお問い合わせ内容を保存するためのcontactモデルを作成していきます。

contactモデル名前を保存するnameカラム(string型)お問い合わせ内容を保存するmessageカラム(text型)を持つとします。

それではcontactモデルを生成しましょう。

これでcontactモデルが完成しました。




2.contactsコントローラーを作成する

次にcontactsコントローラーを作成していきます。

色々とファイルが生成されましたが、「contacts_controller.rb」ファイルに必要事項を記述していきます。

記述内容は以下の通りです。

メール送信はコントローラーのアクションから実行するので、「ContactMailer.contact_mail(@contact).deliver」を組み込んでいます。

ここではお問い合わせ内容をデータベースに保存した後、メール送信を行うという流れになっています。




3.お問い合わせフォームを作成する

次にお問い合わせフォームを作成していきます。

4.メーラークラスを作成する

次にメーラークラスを作成していきます。

以下のようにコマンドを実行すると色々とファイルが作成されます。

色々とファイルが生成されましたが、「contact_mailer.rb」ファイルに必要事項を記述していきます。

記述内容は以下の通りです。

上記ではmailメソッドでお問い合わせ内容の宛先(to)タイトル(subject)を設定しています。




5.サーバーを設定する

次にメールサーバーを設定していきます。

今回はGmailのメールサーバーを利用してメール送信を行います。

メモ

Gmailアカウントのセキュリティで2段階認証の設定とアプリパスワードの生成を行う必要があります。

user_nameに自分のアカウントユーザー名を、passwordに自分のアカウントパスワードを入力して下さい。

注意

本番環境では環境変数を使うようにしましょう。

メモ

上記ではメール送信する上で必要な設定を行っています。

・config.action_mailer.perform_deliveries = true

⇒メール送信を有効にする

・config.action_mailer.raise_delivery_errors = true

⇒メール送信ができなかった場合、エラーを発生させる

・config.action_mailer.delivery_method = :smtp

⇒メール送信する際に通信プロトコルSMTPを利用する




6.メールテンプレートを作成する

次にメールテンプレートを作成していきます。

今回、HTML形式のメールテンプレートとテキスト形式のメールテンプレートの2つを「app/views/contact_mailer」内に作成します。

注意

送信相手によってはHTML形式のメールを受け取ることができない人もいるのでテキスト形式も作成しておくといいかと思います。

以下はHTML形式のメールテンプレートです。

以下はテキスト形式のメールテンプレートです。




7.お問い合わせフォームからメールが届くか試してみよう

準備ができましたので、実際にお問い合わせフォームからメールが届くか試してみましょう。

お問い合わせフォームにアクセスしてみると以下のような画面が出てきます。

お問い合わせフォームに内容を入力して、送信してみましょう。

そうすると以下のようにWebアプリケーションからメールが届きました。

これで完了です。

8.Ruby on Railsを学ぶことができるオススメの教材

Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。

現場で使える Ruby on Rails 5速習実践ガイド

以下の本はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。

 

現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。

そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。

これらの本で是非学習を進めてみてはいかがでしょうか?

レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。

[2020年最新版] Ruby on Rails を学ぶことができるおすすめの本

Udemy

UdemyではRuby on Railsを学ぶことができる講座を多数取り扱っています。

以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

[必見!] Udemy(ユーデミー) おすすめのRuby on Rails講座

プログラミングスクール

TechAcademyWebCampCodeCampなどでRuby on Railsを学ぶことができます。

それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。

以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。

プログラミングスクール TechAcademy(テックアカデミー)とは? 特徴・口コミをまとめてみました! プログラミングスクール DMM WebCamp ビジネス教養コースとは? 特徴・口コミをまとめてみました! プログラミングスクール CodeCamp(コードキャンプ)とは? 特徴・料金・口コミをまとめてみました!

9 COMMENTS

ブリッジ

はじめまして。
本日初めてこちらの記事を参考にさせていただいております。
初心者にとっても分かりやすく説明されており感謝いたします。
ただ1点分かりにくいところがあったので質問いたします。
手順6のメールテンプレートの作成ですが、
VSコードなどのエディターで作成する際にどのフォルダ上で作成すればよいのか分かりませんでした。
お忙しいところ恐縮ですが、教えていただけると幸いでございます。
よろしくお願いいたします。

返信する
押さえておきたいWeb知識

はじめまして。
こちらこそ当サイトをご利用頂きまして、ありがとうございます。
メールテンプレートは「app/views/contact_mailer」内に作成します。
今回、ご質問頂いた所は記事に追加致しました。
今後とも当サイトをよろしくお願いいたします。

返信する
ブリッジ

迅速なご対応ありがとうございます。
すぐに参考にさせていただきます。
こちらこそよろしくお願いいたします。

返信する
MK

わかりやすいサイトを作成いただき、ありがとうございました!2点質問させて下さい!

1.すべて入力、rails s したところ下記エラーでました。
*”Nsc2″というのはアプリの名称です。

1)emailの@以下を付けた場合。
syntax error, unexpected tIVAR, expecting ‘}’ (SyntaxError)
…ser_name: (メールアドレス)@gmail.com,
… ^~~~~~
/home/ec2-user/environment/nsc2/config/environments/development.rb:70: syntax error, unexpected tLABEL, expecting ‘=’
password: XXXXX,
^~~~~~~~~
2)emailの@以下を外した場合。
undefined local variable or method `(メルアド)’ for # (NameError)

対処法はございますでしょうか?

2.メールテンプレート
HTML形式とテキスト形式の2つを作成する、とのことですが、
1)2つファイルを作る、ということでよろしいでしょうか?
2)Yesの場合、テキスト形式のファイルの拡張子は.txtでよろしいでしょうか?

以上、よろしくお願いします!

返信する
MK

先程問い合わせしたものです、無事質問1. は解決しました!ですので、質問1は無視して下さい。

質問2.に回答頂ければと思います!

ちなみに、質問1は、他テキストを参考に下記を入力しました。(何が決定打になったのか、検証は出来ておりません…。)

config.action_mailer.default_url_options = {host: \’\’}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
enable_starttls_auto: true,
address: \’smtp.gmail.com\’,
port: 587,
user_name: \”(メールアドレス)@gmail.com\”,
password: \”(googleで取得したアプリケーションパスワード)\”,
authentication: \’login\’
}

返信する
押さえておきたいWeb知識

当サイトをご利用頂きまして、ありがとうございます!
そうしましたら、2のみ回答させて頂きます。

2.メールテンプレート
HTML形式とテキスト形式の2つを作成する、とのことですが、
1)2つファイルを作る、ということでよろしいでしょうか?
⇒そのような認識で大丈夫です。Action MailerはHTML形式とテキスト形式のメールを送信し、受信者側で表示させる形式を選んで表示させるため2つ作成します。

2)Yesの場合、テキスト形式のファイルの拡張子は.txtでよろしいでしょうか?
⇒「ファイル名.text.erb」でお願いします。

返信する
my30

お問い合わせ機能の実装をしており、こちらの記事を拝見させていただきました。
プログラミング初学者にも分かりやすい記事をありがとうございます。
手順5について一点ご質問がございます。
手順5の設定はどちらのファイルで設定するのでしょうか。
恐れ入りますが、ご返信頂けますと幸いです。

返信する
my30

すみません。先ほどの手順5の質問の件ですが、自身で調べ解決出来ました。
念のための確認ですが、開発環境の場合は、「config/environments/development.rb」のdo~endの中に記述するという認識でお間違い無いでしょうか?
恐れ入りますが、よろしくお願いします。

返信する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です