diff --git a/app/models/user.rb b/app/models/user.rb index 68781d0..56c5fa6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -29,6 +29,26 @@ class User < ActiveRecord::Base user.person.update_attributes(:identifier => user.login, :user_id => user.id, :environment_id => user.environment_id) end + before_update do |user| + if !User.find(user.id).enable_email and user.enable_email and !user.environment.nil? + User::Mailer.deliver_activation_email_notify(user) + end + end + + class Mailer < ActionMailer::Base + def activation_email_notify(user) + user_email = "#{user.login}@#{user.environment.default_hostname(true)}" + recipients user_email + from "#{user.environment.name} <#{user.environment.contact_email}>" + subject _("[%{environment}] Welcome to %{environment} mail!") % { :environment => user.environment.name } + body :name => user.name, + :email => user_email, + :webmail => MailConf.webmail_url, + :environment => user.environment.name, + :url => url_for(:host => user.environment.default_hostname, :controller => 'home') + end + end + def signup! User.transaction do self.save! diff --git a/app/views/user/mailer/activation_email_notify.rhtml b/app/views/user/mailer/activation_email_notify.rhtml new file mode 100644 index 0000000..4fd7b2b --- /dev/null +++ b/app/views/user/mailer/activation_email_notify.rhtml @@ -0,0 +1,10 @@ +<%= _('Hello %s,') % @name %> + +<%= _('Your email %s was just activated.') % [@email] %> + +<%= _('You can access your e-mail from anywhere, using the following address:') %> +<%= @webmail %> + +-- +<%= _('%s environment system') % @environment %> +<%= @url %> diff --git a/test/unit/user_mailer_test.rb b/test/unit/user_mailer_test.rb new file mode 100644 index 0000000..c9f2a49 --- /dev/null +++ b/test/unit/user_mailer_test.rb @@ -0,0 +1,57 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class UserMailerTest < Test::Unit::TestCase + FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures' + CHARSET = "utf-8" + + def setup + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + + @expected = TMail::Mail.new + @expected.set_content_type "text", "plain", { "charset" => CHARSET } + end + + + should 'deliver activation email notify' do + assert_difference ActionMailer::Base.deliveries, :size do + u = Person.find(:first).user + u.environment = Environment.default + User::Mailer.deliver_activation_email_notify(u) + end + end + + should 'deliver notify when activate email' do + u = Person.find(:first).user + u.environment = Environment.default + u.enable_email = false + u.save! + assert_difference ActionMailer::Base.deliveries, :size do + u.enable_email = true + u.save! + end + end + + should 'not deliver notify when disactivate email' do + u = Person.find(:first).user + u.environment = Environment.default + u.enable_email = true + u.save! + assert_no_difference ActionMailer::Base.deliveries, :size do + u.enable_email = false + u.save! + end + end + + private + + def read_fixture(action) + IO.readlines("#{FIXTURES_PATH}/mail_sender/#{action}") + end + + def encode(subject) + quoted_printable(subject, CHARSET) + end + +end -- libgit2 0.21.2