「メール送信」の編集履歴(バックアップ)一覧はこちら
「メール送信」(2012/02/20 (月) 06:53:46) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
Rails3標準では、「ちゃんと使える」Action Mailerがあるので、ぜひ使おう
-手順としては、こんな感じかな?
-まずは、コンフィグ設定
--まあ本には無かったけど、[[ここ>http://d.hatena.ne.jp/shunsuk/20110110/1294657636]]を参考にGmailの設定をしてみる
---こんな感じで、config/environments/development.rbに設定を追加
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:enable_starttls_auto => true,
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:authentication => :plain,
:user_name => '自分のメアド@gmail.com',
:password => '自分のパスワード'
}
---development環境だとメール送信されないので、同じくconfig/environments/development.rbにある、以下の行をコメントアウト
# config.action_mailer.raise_delivery_errors = false
---古いSMTPサーバなんかの設定だと、「認証なし」とか信じられないものがあるので、その場合は:authentication以降をコメントアウトする感じかな?
-次に、以下のコマンドでメーラーを生成
rails g mailer NoticeMailer sendmail_confirm
--これだと、クラス名:NoticeMailerで、メソッド名:sendmail_confirmが生成される
-で、こんな感じで、app/mailers/notice_mailer.rbを修正して、メール送信処理を作る
#coding: utf-8
class NoticeMailer < ActionMailer::Base
default from: "from@example.com",
cc: "cc@example.com"
def sendmail_confirm(user)
@user = user
mail to: "送信先のメアド",
subject: "テストメール"
end
end
-更に、こんな感じで、app/views/notice_mailer/sendmail_confirm.text.erbに、メール本文のテンプレートを書く
ユーザ名:<%= @user.username %>
メールアドレス:<%= @user.email %>
URL:<%= url_for( :host => 'www.example.com', :controller => 'books', :action => 'index' ) %>
-最後にこんな感じで、メール送信アクションを作って叩けば、メールが出る、はず?
def send_mail
user = User.find(1)
@mail = NoticeMailer.sendmail_confirm(user).deliver
render :text => "送信できた!"
end
--これでメールの内容は、ちゃんとuserの内容が出るね。
-同じように、HTMLテンプレートをapp/views/notice_mailer/sendmail_confirm.html.erbに置けば、HTMLメールとテキストの[multipart/alternative]形式で送られるみたいだねー
----
#counter
Rails3標準では、「ちゃんと使える」Action Mailerがあるので、ぜひ使おう
-手順としては、こんな感じかな?
-まずは、コンフィグ設定
--まあ本には無かったけど、[[ここ>http://d.hatena.ne.jp/shunsuk/20110110/1294657636]]を参考にGmailの設定をしてみる
---こんな感じで、config/environments/development.rbに設定を追加
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:enable_starttls_auto => true,
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:authentication => :plain,
:user_name => '自分のメアド@gmail.com',
:password => '自分のパスワード'
}
---development環境だとメール送信されないので、同じくconfig/environments/development.rbにある、以下の行をコメントアウト
# config.action_mailer.raise_delivery_errors = false
---古いSMTPサーバなんかの設定だと、「認証なし」とか信じられないものがあるので、その場合は:authentication以降をコメントアウトする感じかな?
-次に、以下のコマンドでメーラーを生成
rails g mailer NoticeMailer sendmail_confirm
--これだと、クラス名:NoticeMailerで、メソッド名:sendmail_confirmが生成される
-で、こんな感じで、app/mailers/notice_mailer.rbを修正して、メール送信処理を作る
#coding: utf-8
class NoticeMailer < ActionMailer::Base
default from: "from@example.com"
def sendmail_confirm(user)
@user = user
mail to: "送信先のメアド",
subject: "テストメール"
end
end
--CCにも送りたい場合はこんな感じね
default from: "from@example.com",
cc: "cc@example.com"
-更に、こんな感じで、app/views/notice_mailer/sendmail_confirm.text.erbに、メール本文のテンプレートを書く
ユーザ名:<%= @user.username %>
メールアドレス:<%= @user.email %>
URL:<%= url_for( :host => 'www.example.com', :controller => 'books', :action => 'index' ) %>
-最後にこんな感じで、メール送信アクションを作って叩けば、メールが出る、はず?
def send_mail
user = User.find(1)
@mail = NoticeMailer.sendmail_confirm(user).deliver
render :text => "送信できた!"
end
--これでメールの内容は、ちゃんとuserの内容が出るね。
-同じように、HTMLテンプレートをapp/views/notice_mailer/sendmail_confirm.html.erbに置けば、HTMLメールとテキストの[multipart/alternative]形式で送られるみたいだねー
----
#counter