[eluser]squarebones[/eluser]
According to the email library, in the _prep_q_encoding function, which is acted upon the subject (and probably other email parameters), any special characters are being converted to hex representations or other short cuts that make it compatible with the email protocols (I assume). So that exclamation point is being converted to something else. Which doesn't mean it shouldn't sent the email, only that it may or may not contain that exclamation point. There is no apparent break point in that function that would stop the email from being sent. Am I wrong about this?
The short answer...as the doctor says when you tell him it hurts to do something, don't do it. Or use the native PHP email library to send emails and bypass CI's safety nets.