Отправить электронную почту через Gmail из разных аккаунтов - PullRequest
2 голосов
/ 28 октября 2008

Итак, у меня есть 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 и password на лету?

То, что я ищу, - это решение, которое позволяет динамически переключаться между учетными записями. Пример следующего сценария: 10 «Администраторов» могут рассылать уведомления нашим клиентам. У каждого своя учетная запись gmail, когда они заполняют форму на сайте, рельсы соединяются с помощью своей учетной записи и отправляют почту.

Заранее спасибо!

Али

Ответы [ 3 ]

1 голос
/ 28 октября 2008

Я не могу убедиться, что это работает прямо сейчас, но вы должны попробовать просто изменить эти настройки на лету. Т.е. установите имя пользователя / пароль из учетной записи пользователя прямо перед отправкой электронного письма. Вы даже можете установить фильтр до на вашем контроллере для загрузки этой информации.

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

Обратите внимание, что хранить пароль электронной почты пользователя в виде открытого текста довольно опасно, я не знаю, есть ли способ сделать то, что вы хотите, используя схему аутентификации сторонней аутентификации Googles Account, но вы можете проверить это вне.

0 голосов
/ 14 октября 2009

Начиная с 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"
0 голосов
/ 28 октября 2008

Если вы хотите использовать другой адрес электронной почты для ответов от целевых получателей, Вы можете указать Reply-To: otheremail@example.com для протокола SMTP и по-прежнему использовать существующую учетную запись службы Google SMTP.

Однако вам нужно перейти в настройки Gmail, чтобы добавить otheremail@example.com в список «отправить письмо как», что также требует подтверждения вашего otheremail@example.com, отправив ссылку на этот почтовый ящик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...