questo non dipende dal foreach ma dall'if che fai dopo e dalla flag
$paroleyes = 0;
else
$paroleyes = 1;
perchè ogni ciclo cambia il valore della var, quindi ogni volta che non trova la parola, l'else la fa tornare a 1.
ti conviene mettere
Codice PHP:
$parole = array('parolauno', 'paroladue', 'parolatre');
$stringa = $_POST['commenti'];
$trovate = 0;
foreach($parole as $cerca) {
if((stristr($stringa, $cerca)) !== FALSE) {
echo "
[b]trovata la parola $cerca![/b]
";
$trovate += 1; //<<- qui il +=
}
}
// e poi fare
if ($trovate == 0) //manda email
//oppure
if ($trovate > 0) //non mandare
capito? 
ciao