La RFC che descrive gli indirizzi e-mail validi è piuttosto ingarbugliata, e la regex che ne deriva è inusabile. Io mi accontenterei di fare un check "ignorante" per beccare gli errori più clamorosi (una roba tipo "[^\s@]+@[^\s@]+\.[\w]+" per indirizzi pubblici, o brutalmente "[^\s@]+@[^\s@]+" se sono consentiti anche indirizzi locali), tanto comunque bisogna essere pronti a gestire problemi in fase di invio.