DI makes it easy to mock your implementation for writing tests. For example, suppose you want to test a password reset flow. With a hard-coded Utils.sendMail(), your test code would be forced to make a mock SMTP server, read and parse the email and then click on the password reset link. If you had used DI, you could pass a mock Emailer
object. That way, you can write super-fast unit tests, without bothering about external integrations.
You can also swap implementations easily. For example, Google App Engine has a custom sendMail API - so it would be difficult for you to support a GAE version of code and a non-GAE version at the same time. (For the sake of argument, just assume migrating to GAE is that easy. Its not, obviously).
Finally, your code is more modular. A particular class (ResetPassword) may just depend on Util.sendMail(), but Util could be a kitchen sink with methods to do everything under the sun. So, if you want to reuse ResetPassword in another project, you have to copy the entire Utils class, plus the several dependent jars that Utils needs to work. Its not a good option.