emails: fix sending emails to invalid addresses.
Fix mailers to not attempt deliveries to invalid or nonexistent email addresses. This usually happened when someone changed their email, and we tried to send a confirmation email to a nonexistent address.
This commit is contained in:
@@ -5,4 +5,11 @@
|
||||
# @see https://guides.rubyonrails.org/action_mailer_basics.html
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default from: "#{Danbooru.config.canonical_app_name} <#{Danbooru.config.contact_email}>", content_type: "text/html"
|
||||
|
||||
def mail(user, require_verified_email:, **options)
|
||||
to = email_address_with_name(user.email_address&.address, user.name)
|
||||
message = super(to: to, **options)
|
||||
message.perform_deliveries = user.can_receive_email?(require_verified_email: require_verified_email)
|
||||
message
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,24 +7,24 @@ class UserMailer < ApplicationMailer
|
||||
# The email sent when a user receives a DMail.
|
||||
def dmail_notice(dmail)
|
||||
@dmail = dmail
|
||||
mail to: dmail.to.email_with_name, subject: "#{Danbooru.config.app_name} - Message received from #{dmail.from.name}"
|
||||
mail(dmail.to, require_verified_email: true, subject: "#{Danbooru.config.app_name} - Message received from #{dmail.from.name}")
|
||||
end
|
||||
|
||||
# The email sent when a user requests a password reset.
|
||||
def password_reset(user)
|
||||
@user = user
|
||||
mail to: @user.email_with_name, subject: "#{Danbooru.config.app_name} password reset request"
|
||||
mail(@user, require_verified_email: false, subject: "#{Danbooru.config.app_name} password reset request")
|
||||
end
|
||||
|
||||
# The email sent when a user changes their email address.
|
||||
def email_change_confirmation(user)
|
||||
@user = user
|
||||
mail to: @user.email_with_name, subject: "Confirm your email address"
|
||||
mail(@user, require_verified_email: false, subject: "Confirm your email address")
|
||||
end
|
||||
|
||||
# The email sent when a new user signs up with an email address.
|
||||
def welcome_user(user)
|
||||
@user = user
|
||||
mail to: @user.email_with_name, subject: "Welcome to #{Danbooru.config.app_name}! Confirm your email address"
|
||||
mail(@user, require_verified_email: false, subject: "Welcome to #{Danbooru.config.app_name}! Confirm your email address")
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user