Enumerators and recognizers
An enumerator has no input. It works as follows: 


Generate the next computation history.
Check if the computation history is valid.
If the computation history is valid, print the corresponding string.
Go to Step 1.


I'm unclear how your $\mathrm{TM}^E$ works. I can image the following possibilities:


On input $w$, $\mathrm{TM}^E$ enumerates all computation histories and see if $w$ matches some computation history. In this sense, there is no contradiction. $\mathrm{TM}^E$ has to endlessly enumerate computation histories if $w$ matches no computation history (i.e. $w\notin L$), so it may loop.
On input $w$, $\mathrm{TM}^E$ firstly constructs the computation history corresponding to $w$... but wait, how do you construct such a computation history while it may not even exist (i.e. $w\notin L$)?
On input $w$, $\mathrm{TM}^E$ checks whether $w$ is a valid computation history, and accepts if it is valid. In this sense, $\mathrm{TM}^E$ does not accept $L$. Instead, it accepts the language of valid computation histories. This language is different from $L$.