所以我有action_mailer_optional_tls(http://svn.douglasfshearer.com/rails/plugins/action_mailer_optional_tls) 这在我的环境中.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和密码字段?
我正在寻找的是一种允许在帐户之间进行动态切换的解决方案。示例以下方案: 10“管理员”可以向我们的客户发送通知。每个人都有自己的gmail帐户,当他们在网站上填写表格时,使用他们的帐户连接并发送邮件。
提前致谢!
阿里
答案 0 :(得分:1)
我无法验证这是否可行,但您应该尝试即时修改这些设置。即在发送电子邮件之前设置用户帐户的用户名/密码。您甚至可以在控制器上设置一个前置过滤器来加载该信息。
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帐户的third party authentication方案执行您想要的操作,但您可能需要检查一下。< / p>
答案 1 :(得分:0)
如果您想使用其他电子邮件地址进行目标收件人的回复, 您可以为SMTP协议指定回复:otheremail@example.com,并仍然使用谷歌smtp服务的现有帐户。
但是,您需要转到Gmail设置,将otheremail@example.com添加到“发送电子邮件”列表中,这也要求您通过发送指向该收件箱的链接来确认otheremail@example.com是您的。 / p>
答案 2 :(得分: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"