insert multi on a table handled by trigger
You have a contradiction -- On the one hand, you want to "ignore" dups.  On the other hand, you want to "SIGNAL" about dups.  Which is it?

If you want to signal after trying to insert multiple rows, you won't know which row(s) were dups.  If that is OK, then consider something like (I'm not sure of syntax):

DECLARE _dups INT DEFAULT FALSE;
FOR EACH ROW 
  BEGIN
  IF NOT EXISTS (SELECT 1 FROM users WHERE md5_email = MD5(TRIM(NEW.email))) THEN
    SET NEW.md5_email = MD5(TRIM(NEW.email));
  ELSE
    SET _dups = TRUE;
  END IF;
  IF _dups THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Some Emails Already Exists';
  END IF;
END $$


Alternatively, you could probably use rows_affected() to see how many were successfully inserted.