Actually, no, its definitely not safe.

The changes to subscription aren't necessary at present - I haven't written any tests for subscription::send().  I still think there needs to be a way to use a different Mailer class in testing, its probably enough to have getMailer() always return a new object in the production class.  Test classes overriding getMailer() can then do what they like.