Description:
update mail functionality. Update syntax for mail gem (we might need more options for mail setting?)
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r348:fc78be8c614c - - 2 files changed: 14 inserted, 3 deleted

@@ -84,73 +84,73
84 end
84 end
85 render :action => 'confirm', :layout => 'empty'
85 render :action => 'confirm', :layout => 'empty'
86 end
86 end
87
87
88 def forget
88 def forget
89 render :action => 'forget', :layout => 'empty'
89 render :action => 'forget', :layout => 'empty'
90 end
90 end
91
91
92 def retrieve_password
92 def retrieve_password
93 email = params[:email]
93 email = params[:email]
94 user = User.find_by_email(email)
94 user = User.find_by_email(email)
95 if user
95 if user
96 last_updated_time = user.updated_at || user.created_at || (Time.now.gmtime - 1.hour)
96 last_updated_time = user.updated_at || user.created_at || (Time.now.gmtime - 1.hour)
97 if last_updated_time > Time.now.gmtime - 5.minutes
97 if last_updated_time > Time.now.gmtime - 5.minutes
98 flash[:notice] = 'The account has recently created or new password has recently been requested. Please wait for 5 minutes'
98 flash[:notice] = 'The account has recently created or new password has recently been requested. Please wait for 5 minutes'
99 else
99 else
100 user.password = user.password_confirmation = User.random_password
100 user.password = user.password_confirmation = User.random_password
101 user.save
101 user.save
102 send_new_password_email(user)
102 send_new_password_email(user)
103 flash[:notice] = 'New password has been mailed to you.'
103 flash[:notice] = 'New password has been mailed to you.'
104 end
104 end
105 else
105 else
106 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
106 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
107 end
107 end
108 redirect_to :action => 'forget'
108 redirect_to :action => 'forget'
109 end
109 end
110
110
111 protected
111 protected
112
112
113 def verify_online_registration
113 def verify_online_registration
114 if !GraderConfiguration['system.online_registration']
114 if !GraderConfiguration['system.online_registration']
115 redirect_to :controller => 'main', :action => 'login'
115 redirect_to :controller => 'main', :action => 'login'
116 end
116 end
117 end
117 end
118
118
119 def send_confirmation_email(user)
119 def send_confirmation_email(user)
120 contest_name = GraderConfiguration['contest.name']
120 contest_name = GraderConfiguration['contest.name']
121 activation_url = url_for(:action => 'confirm',
121 activation_url = url_for(:action => 'confirm',
122 :login => user.login,
122 :login => user.login,
123 :activation => user.activation_key)
123 :activation => user.activation_key)
124 home_url = url_for(:controller => 'main', :action => 'index')
124 home_url = url_for(:controller => 'main', :action => 'index')
125 mail_subject = "[#{contest_name}] Confirmation"
125 mail_subject = "[#{contest_name}] Confirmation"
126 mail_body = t('registration.email_body', {
126 mail_body = t('registration.email_body', {
127 :full_name => user.full_name,
127 :full_name => user.full_name,
128 :contest_name => contest_name,
128 :contest_name => contest_name,
129 :login => user.login,
129 :login => user.login,
130 :password => user.password,
130 :password => user.password,
131 :activation_url => activation_url,
131 :activation_url => activation_url,
132 - :admin_email => admin_email
132 + :admin_email => GraderConfiguration['system.admin_email']
133 })
133 })
134
134
135 logger.info mail_body
135 logger.info mail_body
136
136
137 send_mail(user.email, mail_subject, mail_body)
137 send_mail(user.email, mail_subject, mail_body)
138 end
138 end
139
139
140 def send_new_password_email(user)
140 def send_new_password_email(user)
141 contest_name = GraderConfiguration['contest.name']
141 contest_name = GraderConfiguration['contest.name']
142 mail_subject = "[#{contest_name}] Password recovery"
142 mail_subject = "[#{contest_name}] Password recovery"
143 mail_body = t('registration.password_retrieval.email_body', {
143 mail_body = t('registration.password_retrieval.email_body', {
144 :full_name => user.full_name,
144 :full_name => user.full_name,
145 :contest_name => contest_name,
145 :contest_name => contest_name,
146 :login => user.login,
146 :login => user.login,
147 :password => user.password,
147 :password => user.password,
148 - :admin_email => admin_email
148 + :admin_email => GraderConfiguration['system.admin_email']
149 })
149 })
150
150
151 logger.info mail_body
151 logger.info mail_body
152
152
153 send_mail(user.email, mail_subject, mail_body)
153 send_mail(user.email, mail_subject, mail_body)
154 end
154 end
155
155
156 end
156 end
@@ -1,30 +1,41
1 module MailHelperMethods
1 module MailHelperMethods
2
2
3 def send_mail(mail_to, mail_subject, mail_body)
3 def send_mail(mail_to, mail_subject, mail_body)
4 mail_from = GraderConfiguration['system.online_registration.from']
4 mail_from = GraderConfiguration['system.online_registration.from']
5 smtp_server = GraderConfiguration['system.online_registration.smtp']
5 smtp_server = GraderConfiguration['system.online_registration.smtp']
6
6
7 if ['fake', 'debug'].include? smtp_server
7 if ['fake', 'debug'].include? smtp_server
8 puts "-------------------------
8 puts "-------------------------
9 To: #{mail_to}
9 To: #{mail_to}
10 From: #{mail_from}
10 From: #{mail_from}
11 Subject: #{mail_subject}
11 Subject: #{mail_subject}
12 #{mail_body}
12 #{mail_body}
13 --------------------------
13 --------------------------
14 "
14 "
15 return true
15 return true
16 end
16 end
17
17
18 mail = Mail.new do
18 mail = Mail.new do
19 from mail_from
19 from mail_from
20 to mail_to
20 to mail_to
21 subject mail_subject
21 subject mail_subject
22 body mail_body
22 body mail_body
23 end
23 end
24
24
25 - mail.delivery_settings = { :address => smtp_server }
25 + mail_option = {
26 + :address => smtp_server,
27 + # :domain => nil,
28 + # :port => 25,
29 + # :user_name => nil,
30 + # :password => nil,
31 + # :authentication=>'plain',
32 + # :enable_starttls_auto => true
33 + }
34 +
35 + mail.delivery_method :smtp, mail_option
36 +
26 mail.deliver
37 mail.deliver
27 end
38 end
28
39
29 end
40 end
30
41
You need to be logged in to leave comments. Login now