redmine_headers 'Sender' => @author.login
end
- # Blind carbon copy recipients
- if Setting.bcc_recipients?
- headers[:bcc] = [headers[:to], headers[:cc]].flatten.uniq.reject(&:blank?)
- headers[:to] = nil
- headers[:cc] = nil
- end
-
if @message_id_object
headers[:message_id] = "<#{self.class.message_id_for(@message_id_object, @user)}>"
end
<div class="box tabular settings">
<p><%= setting_text_field :mail_from, :size => 60 %></p>
-<p><%= setting_check_box :bcc_recipients %></p>
-
<p><%= setting_check_box :plain_text_mail %></p>
<p><%= setting_check_box :show_status_changes_in_mail_subject %></p>
setting_bulk_download_max_size: Maximum total size for bulk download
setting_issues_export_limit: Issues export limit
setting_mail_from: Emission email address
- setting_bcc_recipients: Blind carbon copy recipients (bcc)
setting_plain_text_mail: Plain text mail (no HTML)
setting_host_name: Host name and path
setting_text_formatting: Text formatting
default: 10
mail_from:
default: redmine@example.net
-bcc_recipients:
- default: 1
plain_text_mail:
default: 0
text_formatting:
--- /dev/null
+class RemoveBccRecipientsSetting < ActiveRecord::Migration[6.1]
+ def change
+ Setting.where(:name => 'bcc_recipients').delete_all
+ end
+end
end
end
mail = ActionMailer::Base.deliveries.last
- assert_equal ['jsmith@somenet.foo'], mail.bcc
+ assert_equal ['jsmith@somenet.foo'], mail.to
end
def test_lost_password_using_additional_email_address_should_send_email_to_the_address
end
end
mail = ActionMailer::Base.deliveries.last
- assert_equal ['anotherAddress@foo.bar'], mail.bcc
+ assert_equal ['anotherAddress@foo.bar'], mail.to
end
def test_lost_password_for_unknown_user_should_fail
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
user = User.find(1)
- assert_equal [user.mail], mail.bcc
+ assert_equal [user.mail], mail.to
end
def test_test_email_failure_should_display_the_error
assert_select 'a[href^=?]', 'http://localhost:3000/my/account', :text => 'My account'
end
# The old email address should be notified about a new address for security purposes
- assert [mail.bcc, mail.cc].flatten.include?(User.find(2).mail)
- assert [mail.bcc, mail.cc].flatten.include?('something@example.fr')
+ assert mail.to.include?(User.find(2).mail)
+ assert mail.to.include?('something@example.fr')
end
def test_update
assert_mail_body_match I18n.t(:mail_body_security_notification_notify_disabled, value: 'another@somenet.foo'), mail
# The changed address should be notified for security purposes
- assert [mail.bcc, mail.cc].flatten.include?('another@somenet.foo')
+ assert mail.to.include?('another@somenet.foo')
end
def test_destroy
assert_mail_body_match I18n.t(:mail_body_security_notification_remove, field: I18n.t(:field_mail), value: 'another@somenet.foo'), mail
# The removed address should be notified for security purposes
- assert [mail.bcc, mail.cc].flatten.include?('another@somenet.foo')
+ assert mail.to.include?('another@somenet.foo')
end
end
# Watchers notified
assert_equal 3, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries[1]
- assert [mail.bcc, mail.cc].flatten.include?(User.find(3).mail)
+ assert [mail.to].flatten.include?(User.find(3).mail)
mail = ActionMailer::Base.deliveries[2]
- assert [mail.bcc, mail.cc].flatten.include?(User.find(8).mail)
+ assert [mail.to].flatten.include?(User.find(8).mail)
end
def test_post_create_subissue
ActionMailer::Base.deliveries.clear
@request.session[:user_id] = 1
- with_settings :bcc_recipients => '1' do
- assert_difference 'Issue.count' do
- post(
- :create,
- :params => {
- :project_id => 1,
- :issue => {
- :tracker_id => 1,
- :status_id => 1,
- :subject => 'New issue',
- :priority_id => 5,
- :custom_field_values => {
- @field1.id.to_s => 'Value0',
- @field2.id.to_s => 'Value1',
- @field3.id.to_s => 'Value2'
- },
- :watcher_user_ids => users_to_test.keys.map(&:id)
- }
+ assert_difference 'Issue.count' do
+ post(
+ :create,
+ :params => {
+ :project_id => 1,
+ :issue => {
+ :tracker_id => 1,
+ :status_id => 1,
+ :subject => 'New issue',
+ :priority_id => 5,
+ :custom_field_values => {
+ @field1.id.to_s => 'Value0',
+ @field2.id.to_s => 'Value1',
+ @field3.id.to_s => 'Value2'
+ },
+ :watcher_user_ids => users_to_test.keys.map(&:id)
}
- )
- assert_response 302
- end
+ }
+ )
+ assert_response 302
end
assert_equal users_to_test.keys.size, ActionMailer::Base.deliveries.size
# tests that each user receives 1 email with the custom fields he is allowed to see only
users_to_test.each do |user, fields|
- mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
+ mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
assert_equal 1, mails.size
mail = mails.first
@fields.each_with_index do |field, i|
end
ActionMailer::Base.deliveries.clear
@request.session[:user_id] = 1
- with_settings :bcc_recipients => '1' do
- put(
- :update,
- :params => {
- :id => @issue.id,
- :issue => {
- :custom_field_values => {
- @field1.id.to_s => 'NewValue0',
- @field2.id.to_s => 'NewValue1',
- @field3.id.to_s => 'NewValue2'
- }
+ put(
+ :update,
+ :params => {
+ :id => @issue.id,
+ :issue => {
+ :custom_field_values => {
+ @field1.id.to_s => 'NewValue0',
+ @field2.id.to_s => 'NewValue1',
+ @field3.id.to_s => 'NewValue2'
}
}
- )
- assert_response 302
- end
+ }
+ )
+ assert_response 302
assert_equal users_to_test.keys.size, ActionMailer::Base.deliveries.size
# tests that each user receives 1 email with the custom fields he is allowed to see only
users_to_test.each do |user, fields|
- mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
+ mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
assert_equal 1, mails.size
mail = mails.first
@fields.each_with_index do |field, i|
end
ActionMailer::Base.deliveries.clear
@request.session[:user_id] = 1
- with_settings :bcc_recipients => '1' do
- put(
- :update,
- :params => {
- :id => @issue.id,
- :issue => {
- :custom_field_values => {
- @field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2'
- }
+ put(
+ :update,
+ :params => {
+ :id => @issue.id,
+ :issue => {
+ :custom_field_values => {
+ @field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2'
}
}
- )
- assert_response 302
- end
+ }
+ )
+ assert_response 302
users_to_test.each do |user, fields|
- mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
+ mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
if (fields & [@field2, @field3]).any?
assert_equal 1, mails.size, "User #{user.id} was not notified"
else
assert_mail_body_match 'Message body', mail
end
- bcc_email_addresses = mails.map(&:bcc).flatten
# author
- assert_includes bcc_email_addresses, 'jsmith@somenet.foo'
+ assert_equal ['jsmith@somenet.foo'], mails[0].to
# project member
- assert_includes bcc_email_addresses, 'dlopper@somenet.foo'
+ assert_equal ['dlopper@somenet.foo'], mails[1].to
end
def test_get_edit
assert_select 'a[href^=?]', 'http://localhost:3000/my/account', :text => 'My account'
end
# The old email address should be notified about the change for security purposes
- assert [mail.bcc, mail.cc].flatten.include?(User.find(2).mail)
- assert [mail.bcc, mail.cc].flatten.include?('foobar@example.com')
+ assert mail.to.include?(User.find(2).mail)
+ assert mail.to.include?('foobar@example.com')
end
def test_my_account_notify_about_high_priority_issues_preference
post :edit, :params => {
:settings => {
:mail_from => 'functional@test.foo',
- :bcc_recipients => '0',
:notified_events => %w(issue_added issue_updated news_added),
:emails_footer => 'Test footer'
}
}
assert_redirected_to '/settings'
assert_equal 'functional@test.foo', Setting.mail_from
- assert !Setting.bcc_recipients?
assert_equal %w(issue_added issue_updated news_added), Setting.notified_events
assert_equal 'Test footer', Setting.emails_footer
end
assert_select 'a[href^=?]', 'http://localhost:3000/settings'
end
# All admins should receive this
- recipients = [mail.bcc, mail.cc].flatten
User.active.where(admin: true).each do |admin|
- assert_include admin.mail, recipients
+ assert_include admin.mail, mail.to
end
end
end
def test_create
- with_settings :bcc_recipients => '1' do
- assert_difference 'User.count' do
- assert_difference 'ActionMailer::Base.deliveries.size' do
- post(
- :create,
- :params => {
- :user => {
- :firstname => 'John',
- :lastname => 'Doe',
- :login => 'jdoe',
- :password => 'secret123',
- :password_confirmation => 'secret123',
- :mail => 'jdoe@gmail.com',
- :mail_notification => 'none'
- },
- :send_information => '1'
- }
- )
- end
+ assert_difference 'User.count' do
+ assert_difference 'ActionMailer::Base.deliveries.size' do
+ post :create, :params => {
+ :user => {
+ :firstname => 'John',
+ :lastname => 'Doe',
+ :login => 'jdoe',
+ :password => 'secret123',
+ :password_confirmation => 'secret123',
+ :mail => 'jdoe@gmail.com',
+ :mail_notification => 'none'
+ },
+ :send_information => '1'
+ }
end
end
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
- assert_equal [user.mail], mail.bcc
+ assert_equal [user.mail], mail.to
assert_mail_body_match 'secret', mail
end
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
def test_create_non_admin_should_not_send_security_notification
ActionMailer::Base.deliveries.clear
+
post :create, :params => {
:user => {
:firstname => 'Edgar',
:admin => '0'
}
}
+
assert_nil ActionMailer::Base.deliveries.last
end
with_settings :gravatar_enabled => '1' do
get :edit, :params => {:id => 2}
end
+
assert_response :success
assert_select 'h2>a+img.gravatar'
assert_select 'input[name=?][value=?]', 'user[login]', 'jsmith'
def test_edit_should_be_denied_for_anonymous
assert User.find(6).anonymous?
+
get :edit, :params => {:id => 6}
+
assert_response 404
end
field.update_attribute :text_formatting, 'full'
get :edit, :params => {:id => 2}
+
assert_response :success
end
def test_update
ActionMailer::Base.deliveries.clear
+
put :update, :params => {
:id => 2,
:user => {:firstname => 'Changed', :mail_notification => 'only_assigned'},
:pref => {:hide_mail => '1', :comments_sorting => 'desc'}
}
+
user = User.find(2)
assert_equal 'Changed', user.firstname
assert_equal 'only_assigned', user.mail_notification
:id => 2,
:user => {:group_ids => ['10']}
}
+
user = User.find(2)
assert_equal [10], user.group_ids
end
u.status = User::STATUS_REGISTERED
u.save!
ActionMailer::Base.deliveries.clear
- with_settings :bcc_recipients => '1' do
- put(
- :update,
- :params => {
- :id => u.id,
- :user => {:status => User::STATUS_ACTIVE}
- }
- )
- end
+
+ put(
+ :update,
+ :params => {
+ :id => u.id,
+ :user => {:status => User::STATUS_ACTIVE}
+ }
+ )
+
assert u.reload.active?
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
- assert_equal ['foo.bar@somenet.foo'], mail.bcc
+ assert_equal ['foo.bar@somenet.foo'], mail.to
assert_mail_body_match ll('fr', :notice_account_activated), mail
end
def test_update_with_password_change_should_send_a_notification
ActionMailer::Base.deliveries.clear
- with_settings :bcc_recipients => '1' do
- put(
- :update,
- :params => {
- :id => 2,
- :user => {
- :password => 'newpass123',
- :password_confirmation => 'newpass123'
- },
- :send_information => '1'
- }
- )
- end
+
+ put(
+ :update,
+ :params => {
+ :id => 2,
+ :user => {
+ :password => 'newpass123',
+ :password_confirmation => 'newpass123'
+ },
+ :send_information => '1'
+ }
+ )
u = User.find(2)
assert u.check_password?('newpass123')
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
- assert_equal [u.mail], mail.bcc
+ assert_equal [u.mail], mail.to
assert_mail_body_match 'newpass123', mail
end
def test_update_with_password_change_by_admin_should_send_a_security_notification
- with_settings :bcc_recipients => '0' do
- ActionMailer::Base.deliveries.clear
- user = User.find_by(login: 'jsmith')
+ ActionMailer::Base.deliveries.clear
+ user = User.find_by(login: 'jsmith')
- put :update, :params => {
- :id => user.id,
- :user => {:password => 'newpass123', :password_confirmation => 'newpass123'}
- }
+ put :update, :params => {
+ :id => user.id,
+ :user => {:password => 'newpass123', :password_confirmation => 'newpass123'}
+ }
- assert_equal 1, ActionMailer::Base.deliveries.size
- mail = ActionMailer::Base.deliveries.last
- assert_equal [user.mail], mail.to
- assert_match 'Security notification', mail.subject
- assert_mail_body_match 'Your password has been changed.', mail
- end
+ assert_equal 1, ActionMailer::Base.deliveries.size
+ mail = ActionMailer::Base.deliveries.last
+ assert_equal [user.mail], mail.to
+ assert_match 'Security notification', mail.subject
+ assert_mail_body_match 'Your password has been changed.', mail
end
def test_update_with_generate_password_should_email_the_password
ActionMailer::Base.deliveries.clear
- with_settings :bcc_recipients => '1' do
- put(
- :update,
- :params => {
- :id => 2,
- :user => {
- :generate_password => '1',
- :password => '',
- :password_confirmation => ''
- },
- :send_information => '1'
- }
- )
- end
+
+ put(
+ :update,
+ :params => {
+ :id => 2,
+ :user => {
+ :generate_password => '1',
+ :password => '',
+ :password_confirmation => ''
+ },
+ :send_information => '1'
+ }
+ )
+
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
u = User.find(2)
- assert_equal [u.mail], mail.bcc
+ assert_equal [u.mail], mail.to
m = mail_body(mail).match(/Password: ([a-zA-Z0-9]+)/)
assert m
password = m[1]
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil(
ActionMailer::Base.deliveries.detect do |mail|
- [mail.bcc, mail.cc].flatten.include?(admin.mail)
+ [mail.to].flatten.include?(admin.mail)
end
)
end
issue.assigned_to = nil
issue.save!
- assert_include [user.mail], ActionMailer::Base.deliveries.map(&:bcc)
+ assert_include [user.mail], ActionMailer::Base.deliveries.map(&:to)
end
end
user.pref.save
User.current = user
Mailer.deliver_news_added(news.reload)
- assert_equal 1, last_email.bcc.size
+ assert_equal 1, last_email.to.size
# nobody to notify
user.pref.no_self_notified = true
issue = Issue.find(1)
assert Mailer.deliver_issue_add(issue)
- assert mail = ActionMailer::Base.deliveries.find {|m| m.bcc.include?('dlopper@somenet.foo')}
- assert mail.bcc.include?('otheremail@somenet.foo')
+ assert mail = ActionMailer::Base.deliveries.find {|m| m.to.include?('dlopper@somenet.foo')}
+ assert mail.to.include?('otheremail@somenet.foo')
end
test "#issue_add should not notify project members that are not allow to view the issue" do
def test_version_file_added
attachements = [Attachment.find_by_container_type('Version')]
assert Mailer.deliver_attachments_added(attachements)
- assert_not_nil last_email.bcc
- assert last_email.bcc.any?
+ assert_not_nil last_email.to
+ assert last_email.to.any?
assert_select_email do
assert_select "a[href=?]", "http://localhost:3000/projects/ecookbook/files"
end
def test_project_file_added
attachements = [Attachment.find_by_container_type('Project')]
assert Mailer.deliver_attachments_added(attachements)
- assert_not_nil last_email.bcc
- assert last_email.bcc.any?
+ assert_not_nil last_email.to
+ assert last_email.to.any?
assert_select_email do
assert_select "a[href=?]", "http://localhost:3000/projects/ecookbook/files"
end
Mailer.reminders(:days => days)
assert_equal 1, ActionMailer::Base.deliveries.size
mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
+ assert mail.to.include?('dlopper@somenet.foo')
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail
assert_mail_body_match 'View all issues (2 open)', mail
url =
Mailer.reminders(:days => 42)
assert_equal 1, ActionMailer::Base.deliveries.size
mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
+ assert mail.to.include?('dlopper@somenet.foo')
assert_mail_body_match(
'Bug #3: Error 281 when updating a recipe (En retard de 5 jours)',
mail
Mailer.reminders(:days => 42)
assert_equal 1, ActionMailer::Base.deliveries.size
mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
+ assert mail.to.include?('dlopper@somenet.foo')
assert_mail_body_no_match 'Closed issue', mail
end
end
Mailer.reminders(:days => 42, :users => ['3'])
assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
+ assert mail.to.include?('dlopper@somenet.foo')
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail
end
)
assert_mail_body_match 'Assigned to group (Due in 5 days)', mail
assert_mail_body_match(
- "View all issues (#{mail.bcc.include?('dlopper@somenet.foo') ? 3 : 2} open)",
+ "View all issues (#{mail.to.include?('dlopper@somenet.foo') ? 3 : 2} open)",
mail
)
end
# Returns an array of email addresses to which emails were sent
def recipients
- ActionMailer::Base.deliveries.map(&:bcc).flatten.sort
+ ActionMailer::Base.deliveries.map(&:to).flatten.sort
end
def last_email
end
def destination_user(mail)
- EmailAddress.where(:address => [mail.to, mail.cc, mail.bcc].flatten).map(&:user).first
+ EmailAddress.where(:address => [mail.to, mail.cc].flatten).map(&:user).first
end
end