diff --git a/app/controllers/user_admin_controller.rb b/app/controllers/user_admin_controller.rb --- a/app/controllers/user_admin_controller.rb +++ b/app/controllers/user_admin_controller.rb @@ -1,5 +1,7 @@ class UserAdminController < ApplicationController + include MailHelperMethods + before_filter :admin_authorization # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) @@ -326,19 +328,12 @@ redirect_to :action => 'mass_mailing' and return end - admin_email = GraderConfiguration['system.admin_email'] - note = [] users = [] lines.split("\n").each do |line| user = User.find_by_login(line.chomp) if user - Mail.deliver do - from admin_email - to user.email - subject mail_subject - body mail_body - end + send_mail(user.email, mail_subject, mail_body) note << user.login end end @@ -440,15 +435,8 @@ :contest_name => contest.name, }) - admin_email = GraderConfiguration['system.admin_email'] - logger.info mail_body - Mail.deliver do - from admin_email - to user.email - subject mail_subject - body mail_body - end + send_mail(user.email, mail_subject, mail_body) end def find_contest_and_user_from_contest_id(id) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,6 +2,8 @@ class UsersController < ApplicationController + include MailHelperMethods + before_filter :authenticate, :except => [:new, :register, :confirm, @@ -116,7 +118,6 @@ def send_confirmation_email(user) contest_name = GraderConfiguration['contest.name'] - admin_email = GraderConfiguration['system.admin_email'] activation_url = url_for(:action => 'confirm', :login => user.login, :activation => user.activation_key) @@ -133,17 +134,11 @@ logger.info mail_body - Mail.deliver do - from admin_email - to user.email - subject mail_subject - body mail_body - end + send_mail(user.email, mail_subject, mail_body) end def send_new_password_email(user) contest_name = GraderConfiguration['contest.name'] - admin_email = GraderConfiguration['system.admin_email'] mail_subject = "[#{contest_name}] Password recovery" mail_body = t('registration.password_retrieval.email_body', { :full_name => user.full_name, @@ -155,12 +150,7 @@ logger.info mail_body - Mail.deliver do - from admin_email - to user.email - subject mail_subject - body mail_body - end + send_mail(user.email, mail_subject, mail_body) end end diff --git a/lib/mail_helper_methods.rb b/lib/mail_helper_methods.rb --- a/lib/mail_helper_methods.rb +++ b/lib/mail_helper_methods.rb @@ -1,35 +1,29 @@ module MailHelperMethods - def send_mail(to, subject, body) - mail = TMail::Mail.new - mail.to = to - mail.from = Configuration['system.online_registration.from'] - mail.subject = subject - mail.body = body - - smtp_server = Configuration['system.online_registration.smtp'] + def send_mail(mail_to, mail_subject, mail_body) + mail_from = GraderConfiguration['system.online_registration.from'] + smtp_server = GraderConfiguration['system.online_registration.smtp'] if ['fake', 'debug'].include? smtp_server puts "------------------------- -To: #{mail.to} -From: #{mail.from} -Subject: #{mail.subject} -#{mail.body} +To: #{mail_to} +From: #{mail_from} +Subject: #{mail_subject} +#{mail_body} -------------------------- " return true end - begin - Net::SMTP.start(smtp_server) do |smtp| - smtp.send_message(mail.to_s, mail.from, mail.to) - end - result = true - rescue - result = false + mail = Mail.new do + from mail_from + to mail_to + subject mail_subject + body mail_body end - result + mail.delivery_settings = { :address => smtp_server } + mail.deliver end end