Das, was in der anderen Antwort beschrieben wird, ist nicht sicher; Sie setzen hier Klassenvariablen, keine instanzierten Variablen. Wenn Ihr Rails-Container forking ist, können Sie dies tun, aber jetzt ist Ihre Anwendung abhängig von einem Implementierungsdetail des Containers. Wenn Sie keinen neuen Ruby-Prozess forken, dann kann es hier zu einer Race Condition kommen.
Sie sollten ein Modell haben, das ActionMailer::Base erweitert, und wenn Sie eine Methode aufrufen, wird diese ein Mail::Message-Objekt zurückgeben. Das ist Ihr Instanzobjekt, in dem Sie Ihre Einstellungen ändern sollten. Die Einstellungen sind auch nur ein Hash, so dass Sie sie einbinden können.
msg = MyMailer.some_message
msg.delivery_method.settings.merge!(@user.mail_settings)
msg.deliver
Wo in der obigen mail_settings gibt einige Hash mit entsprechenden Schlüssel IE
{:user_name=>username, :password=>password}