![](/img/trans.png)
[英]Get facebook app id from config/initializers/devise.rb
[英]Rails app with 2 domains: Define 2 SMTP's in initializers/devise.rb & environments/development.rb?
我有一個處理兩個域的Rails應用程序。 該應用程序的設置如本博客文章中所述 。 在我的控制器和視圖中,我正在使用request.domain
來確定訪問者訪問哪個應用程序。
當有人注冊帳戶時,Devise會發送一封確認電子郵件。 此過程取決於以下幾行:
# config/environments/development.rb
MyApp::Application.configure do
...
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'localhost',
:user_name => 'my@email.com',
:password => 'MyPassword',
:authentication => 'plain',
:enable_starttls_auto => true
}
...
end
# config/initializers/devise.rb
Devise.setup do |config|
...
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
config.mailer_sender = "my@email.com"
...
end
我需要development.rb
的:username
和config.mailer_sender
中的devise.rb
依賴於request.domain
,因為用戶當然應該從他注冊的域中接收電子郵件。
我使用SiteSetting
模型為每個Site
指定不同的郵箱
SiteSetting
包含每個郵箱的配置。
郵件程序的代碼是:
# app/mailers/invitation_mailer.rb
class InvitationMailer < ActionMailer::Base
def invitation(invitation)
@site = invitation.site
@invitation = invitation
email_settings = @site.email_settings.first
mail(to: invitation.email,
from: email_settings.try(:from) || 'notifier@example.com',
subject: "Invitation",
delivery_method_options: delivery_options(email_settings))
end
private
def delivery_options(email_settings)
@_delivery_options ||=
if email_settings
{
address: email_settings.address,
port: email_settings.port,
domain: email_settings.domain,
user_name: email_settings.user_name,
password: email_settings.password,
authentication: email_settings.authentication,
enable_starttls_auto: email_settings.enable_startls_auto
}
else
{
address: 'smtp.google.com',
port: 587,
domain: 'example.com',
user_name: 'notifier@example.com',
password: 'secret',
authentication: 'plain',
enable_starttls_auto: true
}
end
end
end
你可以通過username
類似invitation
在此examle,然后你可以得到acsess到username
在Mailer
類(例如InvitationMailer
)
# app/controller/users_controller.rb
class UsersController < ApplicationController
def invitation
invitation = Invitation.find(params[:invitation_id])
InvitationMailer.invitation(invitation).deliver
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.