Are you sure you want to use "provided"? That means that the JDK or container (Tomcat, Jetty, whatever) will provide the dependency for you. I'm not sure if that is the case. Perhaps it does, but you may want to try "compile" scope instead.
dependencies {
compile 'javax.mail:mail:1.4.7'
compile 'javax.mail:javax.mail-api:1.5.1'
compile 'javax.activation:activation:1.1' }
And if that still doesn't work, try to refresh the dependencies explicitly
$ grails compile --refresh-dependencies
One thing to note about changing the scope of the dependency is that you may now have multiple javax.mail:mail dependencies being pulled in. I believe Maven/Ivy should handle the conflicts automatically, but sometimes it gets confused. If you start seeing issues related to method signatures (which imply that you have multiple versions of the same dependency), you may need to run a dependency report and add excludes to BuildConfig for any dependencies that you don't want to be included.
Finally, I assume you are trying to add an SMTP Appender so that you can collect all exceptions that are thrown by your application. I used SMTPAppenders for this purpose for a long time and would occasionally check to see if I needed to deal with any of the errors. The exception email inbox associated with one of my applications eventually became overwhelming and I stopped checking it a long time ago (it's sitting at 5000 messages right now).
I would recommend using Sentry (+ Grails Raven plugin) instead of an SMTPAppender. I've migrated to Sentry for most of my applications and it's really really nice.