2

だから私は action_mailer_optional_tls ( http://svn.douglasfshearer.com/rails/plugins/action_mailer_optional_tls ) を持っていて、これは私のenvironment.rb にあります

ActionMailer::Base.server_settings = {
  :tls => true,
  :address => "smtp.gmail.com",
  :port => "587",
  :domain => "www.somedomain.com",
  :authentication => :plain,
  :user_name => "someusername",
  :password => "somepassword"
}

しかし、別のメール アカウントからメールを送信したい場合はどうすればよいでしょうか。オンザフライで user_name および password フィールドをオーバーライドするにはどうすればよいですか?

私が探しているのは、アカウント間の動的切り替えを可能にするソリューションです。次のシナリオの例: 10 人の「管理者」が顧客に通知を送信できます。それぞれが独自の Gmail アカウントを持っており、サイト上のフォームに記入すると、アカウントを使用して Rails に接続し、メールを送信します。

前もって感謝します!

アリ

4

3 に答える 3

1

現時点ではこれが機能することを確認できませんが、これらの設定をその場で変更してみてください。つまり、電子メールを送信する直前に、ユーザー アカウントからユーザー名/パスワードを設定します。コントローラーに before フィルターをセットアップして、その情報をロードすることもできます。

before_filter :load_email_settings

def load_email_settings
  ActionMailer::Base.server_settings.merge!(:user_name => current_user.email, :password => current_user.email_password)
end

def current_user
   @current_user ||= User.find(session[:user_id])
end

ユーザーのメール パスワードを平文で保存するのは非常に危険であることに注意してください。Google アカウントのサード パーティ認証スキームを使用して目的を達成する方法があるかどうかはわかりませんが 、確認してみてください。

于 2008-10-28T18:36:30.507 に答える
0

ターゲットの受信者からの返信に別のメールアドレスを使用する場合は、SMTPプロトコルにReply-To:otheremail@example.comを指定し、引き続きgooglesmtpサービスの既存のアカウントを使用できます。

ただし、Gmailの設定に移動して、otheremail @ example.comを「名前を付けてメールを送信」のリストに追加する必要があります。また、その受信トレイへのリンクを送信して、otheremail@example.comが自分のものであることを確認する必要があります。

于 2008-10-28T08:42:58.023 に答える
0

Rails 2.3 以降、action_mailer_optional_tlsプラグインは不要です。代わりに、以下を に配置する必要がありますenvironment.rb

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
  :enable_starttls_auto => :true, 
  :address => "smtp.gmail.com", 
  :port => 587, 
  :domain => "mydomain.example.com", 
  :authentication => :plain, 
  :user_name => "myaddress@example.com", 
  :password => "xxxxxxx", 
  :tls => :true 
} 
config.action_mailer.perform_deliveries = :true 
config.action_mailer.raise_delivery_errors = :true 
config.action_mailer.default_charset = "utf-8"
于 2009-10-14T07:03:09.657 に答える