通过gmail从不同的帐户发送电子邮件

时间:2008-10-28 06:37:52

标签: ruby-on-rails email gmail

所以我有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帐户,当他们在网站上填写表格时,使用他们的帐户连接并发送邮件。

提前致谢!

阿里

3 个答案:

答案 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"