Mailerのメール送信を初心者向けに基礎から解説オオイシ2018/4/172019/5/20こんにちは!システムエンジニアのオオイシです。Railsからメールを送信するために利用します。添付ファイルの付きのメールの送信方法などの応用的な使い方関しても解説していきます。標準で組み込まれているメールの送信機能です。メールフォームの入力内容を業務担当者に自動送信メールマガジンを一括メール送信システム障害を検知してシステム担当者メール通知など、色々な場面で活用することができます。Mailerの使い方は実はとってもカンタンです。Mailerの使い方を説明します。はじめに、問い合わせ内容を保存するInquiryモデルを作成します。Inquiryモデルは氏名(name)、メッセージ(message)の属性を持ちます。モデルの作成は次のコマンドを実行してください。インストール方法については、こちらで詳しく説明していますので、ぜひ参考にしてください。Mailerを生成するメール送信するために必要なApplicationMailerを継承するクラスは、generateコマンドから作成することが可能です。今回のサンプルプログラムは、inquiryメイラーをgenerateコマンドで自動作成します。test/mailers/previews/inquiry_mailer_preview.rb作成されたファイルのうち「app/mailers/inquiry_mailer.rb」は、メール送信機能を実装するための空のクラスとなります。ApplicationMailerend次項から、メールの送信機能を実装するためにInquiryMailerクラスへコーディングしていきましょう!メールの宛先や件名を指定するInquiryMailerクラスへsend_mailという名前のメソッドを追加して、システム管理者にメール送信できるようにしてみましょう。)endmailメソッドで利用可能なオプションは次のとおりです。BCC(ブラインドカーボンコピー)のメールアドレス複数の宛先には”,”(カンマ)区切りまたは配列を指定このように、mailメソッドでは通常のメールと同じようにto(メールの送信先アドレス)などを指定可能です。次は、メール本文のレイアウトを作成していきます。メール本文のレイアウトメール本文のレイアウトを作成するためは命名規則にしたがってerbファイルを作成します。app/views/メイラー名_mailer/メイラークラスのメソッド名.text.erb今回作成するサンプルでは「app/views/inquiry_mailer/send_mail.text.erb」を新規に作成してください。問い合わせがありました。%>このように、erbのタグを使ってメール本文のレイアウトを作成することが可能です。Mailerにはメールのプレビュー機能があります。メールをプレビューするにはActionMailer::Previewクラスを継承したクラスを作成し、メール送信処理を呼び出すプログラムをそこに書きます。ActionMailer::Previewを継承したクラスは、generateコマンドで生成したInquiryMailerPreviewクラスが存在するので、こちらにコーディングしていきましょう。次のサンプルコードは、InqueryMailerクラスから問い合わせ内容をメール送信するプログラムです。アクセスしてみてください。次の画面が表示されます。inquiryのリンクは、InquiryMailerPreviewクラスに作成したinquiryメソッドに対応して表示されています。そのため、確認したいメールデータ毎にメソッドを定義すれば、いろいろなパターンでプレビューすることも可能です。inquiryのリンクをクリックしてください。このように、メールのプレビューが確認することができました!プレビューでは実際にメールが送信されることはないので何度でも確認することが可能です。メールを送信してみようGmailで送信するための設定メールのプレビューが確認できたので、実際にメールを送信してみましょう。Gmailに2段階認証がかかっているなど、セキュリティの状態によっては送信できないことがあります。メールサーバの設定をするには「config/environments/環境毎に設定.rb」に追記します。本記事ではGmailでの設定方法について紹介します。true}次項では実際にメールを送信してみましょう。メールの送信メールを送信するにはdeliver_nowメソッドを実行します。サンプルプログラムでメール送信するには、InquiryMailer.send_mail(モデル変数).deliver_nowを実行します。コントローラーなどから実行できますが、今回はRailsコンソールから実行します。「app/mailers/inquiry_mailer.rb」のfromやtoを任意のメールアドレスに変更して、次のように実行してください。InquiryMailer.send_mail(inquiry).deliver_now実行後はメールが送信されたことを確認してみてください。自分宛てにGmailでメール送信した場合は次のように受信できたと思います。MailerでHTMLメールを送信するためには、app/views/メイラー名_mailer/メイラークラスのメソッド名.html.erbとファイル名を作成し、メール本文もHTMLで記載します。サンプルプログラムを確認してみましょう。問い合わせがありました。</body></html>プレビュー機能でどのようなレイアウトになるか確認してみましょう。このようにHTML形式のメールレイアウトとなりました。マルチパートメール(multipart/alternative形式)を自動生成してメール送信します。パルチパートメールとは、テキストメールとHTMLメールの両方をメール送信して、メールクライアント側で自動判別してメールを表示するための仕組みです。添付するファイルデータを追加するだけで実現できます。画像ファイルをメールに添付するサンプルプログラムを確認してみましょう。tmpフォルダにsample.jpgがあり、このファイルを添付するサンプルです。メールを送信する方法について解説しました。メールのプレビュー機能を使うと、実際にメールを送信しなくてもメールのレイアウトを確認することが可能です。HTMLメールや添付ファイル付きメールもカンタンに実現できるので、ぜひ活用してください。Mailerの使い方を忘れてしまったらこの記事を確認してくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。プログラミング、システムアーキテクトからマネジメントに到るまでなんでも食べます。