Tutti gli innerHTML riferiti ad elementi contentEditable vanno sostituiti con textContent.
Questo perché altrimenti gli a capo restano come <br> (e nessuno vuole gli accapo) e gli spazi finali al posto di rimanere spazi (ed essere quindi trimmati lato server) diventano dei terribili   che rimangono là e sporcano il database (rendendo ad esempio le mail non funzionanti se ci si scorda uno spazio in fondo).
Ora il cambio mail avviene con textContent e non innerHTML. Ho trasportato solo il cambio email perché è l'unico posto in cui era strettamente necessario.
Tutti gli innerHTML riferiti ad elementi contentEditable vanno sostituiti con textContent. Questo perché altrimenti gli a capo restano come
<br>
(e nessuno vuole gli accapo) e gli spazi finali al posto di rimanere spazi (ed essere quindi trimmati lato server) diventano dei terribili   che rimangono là e sporcano il database (rendendo ad esempio le mail non funzionanti se ci si scorda uno spazio in fondo).p.s. textContent è supportato da ie >=9