ウェブ-HACKS 「とりあえずやってみよう!」ブログでタグ「ActionMailer」が付けられているもの

#1 RailsでHTMLメールを送信する(ActionMailer)

   ブックマークに追加する
以前に話した「WebScrap」を仕事終わってから、作成しているのですが、Webページをキャッシュする部分でDBに保存するのはリソース上やはり厳しいということで自分のGMailに送信することにしました。

これであれば、Web上にHTMLのキャッシュを残しておくことができ、さらに過去にキャッシュしたHTMLページのデータもGoogleの検索エンジンで見つけられます。

Railsで通常のメールを送信するのは、以前の記事(ActionMailer)に書きましたが、HTML形式のメール送信の方法は以下の通りです。

  • コントローラーに以下メソッドをprivateメソッドとして準備しました。

  def sendmail(title, content, mail)
    email = RMailer.create_sent( title, content, to )
    email.set_content_type("text/html")
    ScrapMailer.deliver(email)
  end

まずはemailオブジェクトを生成し、content_typeを設定してからメール送信すればOKですね。 

#6 ActionMailで会員登録時にメール送信する

   ブックマークに追加する
会員登録時にメールを送信し、クリック後会員登録完了とすることで
メールアドレスのチェックをおこなう。
railsではActionMailerという仕組みにより、簡単にテンプレートメールを送信できます。
以下5つのSTEPで実装できます。


1) Rails環境ファイルにメールサーバを設定
以下environment.rbファイルにメールサーバの設定をする
- mytask/config/environment.rbに以下追加(下線部は環境によって変更する)

    # Include your application configuration below
    ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.server_settings = {
      :address  => "address",
      :port  => 25,
      :domain  => 'domain',
      :user_name  => 'user_name',
      :password  => 'password',
      :authentication  => :login
        }

2) generateを使ってActionMailerを作成する
モデルとして作成されるので注意する。テンプレートファイルはviewファイルとして生成される

    $ ruby script/generate mailer AccountMailer sent
          exists  app/models/
          create  app/views/account_mailer
          exists  test/unit/
          create  test/fixtures/account_mailer
          create  app/models/account_mailer.rb
          create  test/unit/account_mailer_test.rb
          create  app/views/account_mailer/sent.rhtml
          create  test/fixtures/account_mailer/sent

3) model(accout_mailer)の編集

※app/models/account_mailer.rbに以下メソッドを追加する
 
   $ ruby script/generate mailer AccountMailer sent
          exists  app/models/
          create  app/views/account_mailer
          exists  test/unit/
          create  test/fixtures/account_mailer
          create  app/models/account_mailer.rb
          create  test/unit/account_mailer_test.rb
          create  app/views/account_mailer/sent.rhtml
          create  test/fixtures/account_mailer/sent

4 メールのテンプレートファイルを編集する

※mytask/app/views/account_mailer/sent.rhtml を編集する

5 controllerからメールモデルを呼び出す

    def sendmail
      @user = User.find(params[:id])
      AccountMailer.deliver_sent(@user)
    end

これで完了、5分くらいでできちゃいます。
あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。
Google

Tags