Disclaimer first: I've done a very quick visual check of the v9.2 account.aspx.cs, customer.cs and database procedure that updates the customer. So this might not work!
But, try this:
Looking at the file account.aspx.cs there is a method called 'btnUpdateAccount_Click' which is called when the customer clicks to update their account details.
Within this method is this line:
Which I think returns true if the new email address is permitted.
NewEmailAddressAllowed = Customer.NewEmailPassesDuplicationRules(
The problem is that later in the code, there is this check:
Which then goes on to reset the Customer's email back to their original email address. The problem is that this is being called when the new email address is allowed, whereas it really needs to be called only if the new email address isn't allowed or the email address is invalid.
if (NewEmailAddressAllowed || !emailisvalid)
To fix this, I *think* you just need to change the line in account.aspx.cs to add a ! in front of NewEmailAddressAllowed:
...and Vortx, add a test case into your product test schedule to test for this in future releases!
if (!NewEmailAddressAllowed || !emailisvalid)
EMailField = ThisCustomer.EMail ;