Ruby on Railsを勉強している人
お問い合わせフォームの内容を自分のメールアドレス(Gmail)に送信させる方法を知りたいな!
上記のようなお悩みを持っている方はいないでしょうか?
この記事は上記のような疑問を解消するものとなっています。
- contactモデルを作成する
- contactsコントローラーを作成する
- お問い合わせフォームを作成する
- メーラークラスを作成する
- サーバーを設定する
- メールテンプレートを作成する
- お問い合わせフォームからメールが届くか試してみよう
- Ruby on Railsを学ぶことができるオススメの教材
今回はお問い合わせフォームの内容をGmailで自分のメールアドレスに送信させる方法をまとめてみました。
気になる方は是非ご覧になってください!
action mailerについて詳しく知りたい方は是非「パーフェクト Ruby on Rails」をご覧ください。
対象バージョンをRuby 2.6/2.7系、Rails 6.0系に変更した増補改訂版です。
新しいRailsのバージョンでサポートされた機能の紹介だけでなく、Dockerでの導入方法など最新の実践的内容を追加し,現在のトレンドとなる開発スタイルを紹介しています。
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アプリケーションからメールが届きました。
これで完了です。
action mailerについて詳しく知りたい方は是非「パーフェクト Ruby on Rails」をご覧ください。
対象バージョンをRuby 2.6/2.7系、Rails 6.0系に変更した増補改訂版です。
新しいRailsのバージョンでサポートされた機能の紹介だけでなく、Dockerでの導入方法など最新の実践的内容を追加し,現在のトレンドとなる開発スタイルを紹介しています。
8.Ruby on Railsを学ぶことができるオススメの教材
Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。
現場で使える Ruby on Rails 5速習実践ガイド
「現場で使える Ruby on Rails 5速習実践ガイド」はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。
「現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。
そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。
これらの本で是非学習を進めてみてはいかがでしょうか?
レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。
Udemy
「Udemy(ユーデミー)」ではRuby on Railsを学ぶことができる講座を多数取り扱っています。
「Udemy(ユーデミー)」では頻繁にセールが行われており、時には半額以下(最大90%OFF)になることも。
以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。
プログラミングスクール
- TechAcademy:通過率10%の選考に合格した現役エンジニアから学べるオンラインに特化したプログラミングスクール。
- DMM WebCamp:講師に質問し放題で効率的に学習。短期間のカリキュラムで確実に結果が出る。専属コーチ・アドバイザーが卒業まで伴走。
- CodeCamp:あなたの目的に合わせた、最適な学習カリキュラム。
- Tech Camp:未経験でも挫折せずテクノロジースキルが身につく。
それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。
無料体験を受けているうちに自分に合うサービスかどうか確認することができます。
以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。
はじめまして。
本日初めてこちらの記事を参考にさせていただいております。
初心者にとっても分かりやすく説明されており感謝いたします。
ただ1点分かりにくいところがあったので質問いたします。
手順6のメールテンプレートの作成ですが、
VSコードなどのエディターで作成する際にどのフォルダ上で作成すればよいのか分かりませんでした。
お忙しいところ恐縮ですが、教えていただけると幸いでございます。
よろしくお願いいたします。
はじめまして。
こちらこそ当サイトをご利用頂きまして、ありがとうございます。
メールテンプレートは「app/views/contact_mailer」内に作成します。
今回、ご質問頂いた所は記事に追加致しました。
今後とも当サイトをよろしくお願いいたします。
迅速なご対応ありがとうございます。
すぐに参考にさせていただきます。
こちらこそよろしくお願いいたします。
わかりやすいサイトを作成いただき、ありがとうございました!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でよろしいでしょうか?
以上、よろしくお願いします!
先程問い合わせしたものです、無事質問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\’
}
当サイトをご利用頂きまして、ありがとうございます!
そうしましたら、2のみ回答させて頂きます。
2.メールテンプレート
HTML形式とテキスト形式の2つを作成する、とのことですが、
1)2つファイルを作る、ということでよろしいでしょうか?
⇒そのような認識で大丈夫です。Action MailerはHTML形式とテキスト形式のメールを送信し、受信者側で表示させる形式を選んで表示させるため2つ作成します。
2)Yesの場合、テキスト形式のファイルの拡張子は.txtでよろしいでしょうか?
⇒「ファイル名.text.erb」でお願いします。
お問い合わせ機能の実装をしており、こちらの記事を拝見させていただきました。
プログラミング初学者にも分かりやすい記事をありがとうございます。
手順5について一点ご質問がございます。
手順5の設定はどちらのファイルで設定するのでしょうか。
恐れ入りますが、ご返信頂けますと幸いです。
すみません。先ほどの手順5の質問の件ですが、自身で調べ解決出来ました。
念のための確認ですが、開発環境の場合は、「config/environments/development.rb」のdo~endの中に記述するという認識でお間違い無いでしょうか?
恐れ入りますが、よろしくお願いします。
当サイトをご利用頂きまして、ありがとうございます。
do~endの中に記述するという認識で間違いないです。
お手数お掛けしますが、よろしくお願いいたします。