ウェブ-HACKS 「とりあえずやってみよう!」ブログでタグ「ActionMailer」が付けられているもの
以前に話した「WebScrap」を仕事終わってから、作成しているのですが、Webページをキャッシュする部分でDBに保存するのはリソース上やはり厳しいということで自分のGMailに送信することにしました。
これであれば、Web上にHTMLのキャッシュを残しておくことができ、さらに過去にキャッシュしたHTMLページのデータもGoogleの検索エンジンで見つけられます。
Railsで通常のメールを送信するのは、以前の記事(ActionMailer)に書きましたが、HTML形式のメール送信の方法は以下の通りです。
まずはemailオブジェクトを生成し、content_typeを設定してからメール送信すればOKですね。
これであれば、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ですね。
会員登録時にメールを送信し、クリック後会員登録完了とすることで
メールアドレスのチェックをおこなう。
railsではActionMailerという仕組みにより、簡単にテンプレートメールを送信できます。
以下5つのSTEPで実装できます。
1) Rails環境ファイルにメールサーバを設定
以下environment.rbファイルにメールサーバの設定をする
- mytask/config/environment.rbに以下追加(下線部は環境によって変更する)
2) generateを使ってActionMailerを作成する
モデルとして作成されるので注意する。テンプレートファイルはviewファイルとして生成される
3) model(accout_mailer)の編集
※app/models/account_mailer.rbに以下メソッドを追加する
4) メールのテンプレートファイルを編集する
これで完了、5分くらいでできちゃいます。
メールアドレスのチェックをおこなう。
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分くらいでできちゃいます。

