In the Craft 3 Class Reference (https://docs.craftcms.com/api/v3), there are two classes under craft\mail:

  • Mailer
  • Message

I found that I was able to send an email using this:


use craft\mail\Message;

$message = new Message();
$message->setTo('[email protected]');
$message->setSubject("Hello world.");
$message->setHtmlBody("Hello world.");

But I found in some examples, like this one, that the email could be send using Craft::$app->mailer->send($message) instead of $message->send().

What's the difference between the Mailer and the Message classes? When should I use one instead of the other?

1 Answer 1


They're both valid options.

$message->send() is a wrapper for Mailer:


It will take an optional Mailer parameter. If one is not passed it, it will default to the default Yii/Craft::$app->mailer and ultimately just call send() on it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.