-
Notifications
You must be signed in to change notification settings - Fork 9
smtp
Herokuでは、メールサービスを提供していませんが、外部のSMTPサーバーを使用することを許可しています。 適切なemailサービスを Heroku Add-onsのカタログから 探し出してみて下さい。とても軽量に、設定を変更せず1日に何千通ものemailを扱うことが出来ます。
ここでは、外部のSMTPプロバイダーを利用したemail送信のRailsアプリをセットアップする クイックガイドを提供してみます。
config/environment.rb
内にあるActionMailerのdeliveryメソッドをSMTPに設定
:::ruby
config.action_mailer.delivery_method = :smtp
:::ruby
ActionMailer::Base.smtp_settings = {
:address => "smtp.someserver.net",
:port => 25,
:user_name => "someone@someserver.net",
:password => "mypass",
:authentication => :login
}
Railsがメール配信時にエラーを返すように設定したいのであれば、下記パラメータをtrueにします。
:::ruby
config.action_mailer.raise_delivery_errors = true
GmailをSMTPサーバーとして使いたいのであれば、もう少し余分な設定が必要となります。 概要はこちらのブログを参照して下さい。
Mailerクラスを作成することから始めます:
:::term
$ ./script/generate mailer <name>
<name>
はクラス名(例えば、Notifier等)です。RailsのMailerは、それぞれのアクションに一つのメソッドを持ち、
views/<class_name>
配下にテンプレートが作成されるコントローラーの動きに似ているところがあります。
Mailerでは、それぞれのメソッドが、emailメッセージの定義となります。(誰が受信者で、どんな件名で等)
emailのボディは、ビューに格納されます。
例:
:::ruby
class UserMailer < ActionMailer::Base
def #_notification(user)
recipients "#{user.name} <#{user.email}>"
from "My Forum "
subject "Please activate your new account"
sent_on Time.now
body { :user => user, :url => activate_url(user.activation_code, :host => user.site.host }
end
end
app/views/user_mailer/#_notification.rhtml
配下のビューは、このような感じになります。:
:::html
Your account has been created.
Username:
Password:
Visit this url to activate your account:
さあ、emailを送信する準備が整いました。正常に動作するかを確認するため、コンソールから手動で送信してみましょう:
:::term
$ heroku console
>>> user = User.new(:name => 'Me', :email => 'me@gmail.com', :login => 'me', :password => '1234')
>>> UserMailer.deliver_#_notification(user)
emailが送信されたことを確認するため、heroku logs
の結果をチェックして下さい。
一度、動作検証がなされると、モデルへ追記したくなることでしょう。:
:::ruby
after_create :deliver_#_notification
def deliver_#_notification
UserMailer.deliver_#_notification(self)
end
制限された環境で良ければ、Gmailが選択肢となるでしょう。1日に500メッセージまで送信可能となります。 差出人のアドレスは、常にアカウントのemailアドレスとなります。 こちらのブログにて Gmail経由でのemail送信に関する必要なステップが記載されています。ブログに記載された内容に従って下さい。 終わりましたら、Gmailを使うためにRailsを設定して行きます。上記#1のステップから始めて下さい。