Ruby-on-rails-rails-send-email

提供:Dev Guides
移動先:案内検索

Ruby on Rails-メールを送信

*Action Mailer* は、アプリケーションがメールを送受信できるようにするRailsコンポーネントです。 この章では、Railsを使用してメールを送信する方法を説明します。 次のコマンドを使用して*メール*プロジェクトの作成を始めましょう。
tp> rails new mailtest

これにより、続行するために必要なフレームワークが作成されます。 次に、ActionMailerの構成から始めます。

アクションメーラー-設定

以下は、実際の作業に進む前に設定を完了するために従う必要がある手順です-

emailsプロジェクトのconfigフォルダーに移動して、environment.rbファイルを開き、このファイルの下部に次の行を追加します。

config.action_mailer.delivery_method = :smtp

SMTPサーバーを使用することをActionMailerに伝えます。 Mac OS XやLinuxなどのUnixベースのオペレーティングシステムを使用している場合は、:sendmailに設定することもできます。

environment.rbの下部にも次のコード行を追加します。

config.action_mailer.smtp_settings = {
   address:              'smtp.gmail.com',
   port:                 587,
   domain:               'example.com',
   user_name:            '<username>',
   password:             '<password>',
   authentication:       'plain',
   enable_starttls_auto: true
}

各ハッシュ値を、Simple Mail Transfer Protocol(SMTP)サーバーの適切な設定に置き換えます。 わからない場合は、インターネットサービスプロバイダーからこの情報を取得できます。 標準のSMTPサーバーを使用している場合、ポート番号25と認証タイプを変更する必要はありません。

デフォルトの電子メールメッセージ形式を変更することもできます。 プレーンテキスト形式ではなくHTMLでメールを送信する場合は、config/environment.rbにも次の行を追加します-

ActionMailer::Base.default_content_type = "text/html"
ActionMailer
Base.default_content_typeは、「text/plain」、「text/html」、および「text/enriched」に設定できます。 デフォルト値は「text/plain」です。

次のステップは、メーラーを作成することです

メーラーを生成する

次のようにメーラーを生成するには、次のコマンドを使用します-

tp> cd emails
emails> rails generate mailer Usermailer

これにより、app \ mailerディレクトリにuser_mailer.rbファイルが作成されます。 次のようにこのファイルの内容を確認してください-

class Emailer < ActionMailer::Base
end

次のように1つのメソッドを作成しましょう-

class UserMailer < ApplicationMailer
   default from: '[email protected]'

   def welcome_email(user)
      @user = user
      @url  = 'http://www.gmail.com'
      mail(to: @user.email, subject: 'Welcome to My Awesome Site')
   end

end
  • デフォルトのハッシュ-これは、このメーラーから送信する電子メールのデフォルト値のハッシュです。 この場合、:fromヘッダーをこのクラスのすべてのメッセージの値に設定しています。 これはメールごとに上書きできます
  • mail -実際の電子メールメッセージ、:toおよび:subjectヘッダーを渡します。

app/views/user_mailer/にwelcome_emaill.erbというファイルを作成します。 これは、HTMLでフォーマットされた、電子メールに使用されるテンプレートになります-

<html>

   <head>
      <meta content = 'text/html; charset = UTF-8' http-equiv = 'Content-Type'/>
   </head>

   <body>
      <h1>Welcome to example.com, <%= @user.name %></h1>

      <p>
         You have successfully signed up to example.com,your username is:
         <%= @user.login %>.<br>
      </p>

      <p>
         To login to the site, just follow this link:
         <%= @url %>.
      </p>

      <p>Thanks for joining and have a great day!</p>

   </body>
</html>

次に、次のようにこのアプリケーションのテキスト部分を作成します-

Welcome to example.com, <%= @user.name %>
===============================================

You have successfully signed up to example.com,
your username is: <%= @user.login %>.

To login to the site, just follow this link: <%= @url %>.

Thanks for joining and have a great day!

メーラーの呼び出し

最初に、簡単なユーザーの足場を作成しましょう

$ bin/rails generate scaffold user name email login
$ bin/rake db:migrate

Action MailerはActive Jobとうまく統合されているため、リクエストとレスポンスのサイクル以外で電子メールを送信できるため、ユーザーは待つ必要がありません-

class UsersController < ApplicationController
   # POST/users
   # POST/users.json
   def create
   @user = User.new(params[:user])

      respond_to do |format|
         if @user.save
            # Tell the UserMailer to send a welcome email after save
            UserMailer.welcome_email(@user).deliver_later

            formatl { redirect_to(@user, notice: 'User was successfully created.') }
            format.json { render json: @user, status: :created, location: @user }
         else
            formatl { render action: 'new' }
            format.json { render json: @user.errors, status: :unprocessable_entity }
         end

      end

   end
end

次に、http://127.0.0.1:3000/users/newを使用してアプリケーションをテストします。 次の画面が表示され、この画面を使用して、誰にでもメッセージを送信できます。

メール送信

これはあなたのメッセージを送信し、次のようにテキストメッセージ「メッセージが正常に送信されました」と出力が表示されます-

sent mail to [email protected] (2023.Sms)
[ActiveJob] [ActionMailler::DeliveryJob] [2cfde3c-260e-4a33-1a6ada13a9b] Date: Thu, 09 Jul 2015 11:44:05 +0530
From: [email protected]
To: [email protected]
Message-Id: <[email protected]>
Subject: Welcome to My Awesome Site
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--mimepart_559e112d601c8_f1031e7f20233f5";
charset=UTF-8
Content-Transfer-Encoding:7bit

Railsを使用してメールを送信する方法の詳細については、http://en.wikibooks.org/wiki/Ruby_on_Rails/ActionMailer [ActionMailer]をご覧ください。