1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Ruby on Railsのメーラーの使い方を説明します。

2022-02-03 08:24:22


    メールにSomethingMailerという名前をつける。Mailerのルートがないと、どれがMailerで、どのビューがそれに関連しているのかがすぐにわかりません。
    HTMLとプレーンテキストのビューテンプレートを用意する。

    開発環境において、文字化け送信エラーを有効にする。これらのエラーはデフォルトでは無効になっています。

 # config/environments/development.rb

 config.action_mailer.raise_delivery_errors = true



    smtp.gmail.com を使って開発モードで SMTP サーバをセットアップします (もちろん、独自のローカル SMTP サーバがある場合は除きます)。

 # config/environments/development.rb

 config.action_mailer.smtp_settings = {
  address: 'smtp.gmail.com',
  # more settings
 }



    ホスト名にデフォルトの設定を提供する。

 # config/environments/development.rb
 config.action_mailer.default_url_options = {host: "#{local_ip}:3000"}

 # config/environments/production.rb
 config.action_mailer.default_url_options = {host: 'your_site.com'}

 # In your mailer class
 default_url_options[:host] = 'your_site.com'



    サイト内でメールリンクを使用する必要がある場合は、常に _path メソッドの代わりに _url メソッドを使用してください。urlメソッドにはホスト名が含まれますが、_pathメソッドには含まれません。

 # Error
 You can always find more info about this course
 = link_to 'here', url_for(course_path(@course))

 # Correct
 You can always find more info about this course
 = link_to 'here', url_for(course_url(@course))



    送信アドレスと受信アドレスを正しくフォーマットしてください。以下の形式を使用してください。

 # In your mailer category
 default from: 'Your Name <info@your_site.com>'



    テスト環境のメール配信方法がtestに設定されていることを確認します。

 # config/environments/test.rb

 config.action_mailer.delivery_method = :test



    開発環境と本番環境の配信方法は、smtp: :test とする。

 # config/environments/development.rb, config/environments/production.rb

 config.action_mailer.delivery_method = :smtp



    HTML メールを送信する場合、外部スタイルに問題があるユーザーもいるため、スタイルはすべてインライン スタイルにする必要があります。ある意味、これは管理を難しくし、コードの再利用を引き起こすことになります。スタイルを変換して、対応する html タグに配置する 2 つの類似した gem があります。 プリメーラレイルズ3 ローディー .

    ページが応答を生成したときにメールを送信することは避けてください。複数のメールを送信すると、ページの読み込みに遅延が発生し、リクエストがタイムアウトする可能性があります。使用方法 遅延ジョブ gemを使用すると、送信されたメールをバックグラウンドで処理する問題を克服することができます。