2008-10-28 7 views
2

J'ai action_mailer_optional_tls (http://svn.douglasfshearer.com/rails/plugins/action_mailer_optional_tls) et dans mes enviroment.rbEnvoyer des e-mails via gmail de différents comptes

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

Mais si je veux envoyer des e-mails à partir de différents comptes de messagerie? Comment remplacer les champs user_name et password à la volée?

Ce que je recherche est une solution qui permet la commutation dynamique entre les comptes. Exemple le scénario suivant: 10 "Admins" peut envoyer des avis à nos clients. Chacun a son propre compte gmail, quand ils remplissent un formulaire sur le site, les rails se connectent en utilisant leur compte et envoient le mail.

Merci d'avance!

Ali

Répondre

0

Si vous souhaitez utiliser une adresse e-mail différente pour les réponses des récepteurs cibles, vous pouvez spécifier Reply-To: [email protected] pour le protocole SMTP et toujours en utilisant le compte existant de service de smtp de google. Toutefois, vous devez accéder aux paramètres Gmail pour ajouter [email protected] à la liste des "envoyer un e-mail sous", ce qui vous oblige également à confirmer [email protected] en envoyant un lien vers cette boîte de réception.

1

Je ne peux pas vérifier que cela fonctionne pour l'instant, mais vous devriez essayer de modifier ces paramètres à la volée. c'est-à-dire définir le nom d'utilisateur/mot de passe du compte de l'utilisateur juste avant d'envoyer un e-mail. Vous pouvez même configurer un filtre avant sur votre contrôleur pour charger cette information.

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 

Notez que le stockage du mot de passe de messagerie de l'utilisateur en texte clair est assez dangereux, je ne sais pas s'il y a un moyen de faire ce que vous voulez en utilisant système third party authentication Googles compte, mais vous pouvez vérifier. A partir de Rails 2.3, le plugin action_mailer_optional_tls n'est pas requis.

0

Au lieu de cela, vous devez mettre ce qui suit dans votre 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 => "[email protected]", 
    :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

La réponse a été copié d'un commentaire par Ivan à http://douglasfshearer.com/blog/gmail-smtp-with-ruby-on-rails-and -actionmailer –

+0

Cela ne répond toujours pas à la question principale. Je pense que le smtp_settings devrait être changé dans les méthodes de mailer réelles, mais puisque ceux-ci ne sont pas directement appelés je ne suis pas sûr. Quelqu'un peut-il confirmer? –

Questions connexes