BaseMessage.php 1.95 KB
Newer Older
1 2 3 4 5 6 7
<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

Paul Klimov committed
8
namespace yii\mail;
9 10 11 12 13

use yii\base\Object;
use Yii;

/**
Qiang Xue committed
14 15 16 17
 * BaseMessage serves as a base class that implements the [[send()]] method required by [[MessageInterface]].
 *
 * By default, [[send()]] will use the "mail" application component to send the current message.
 * The "mail" application component should be a mailer instance implementing [[MailerInterface]].
18 19 20 21 22 23
 *
 * @see BaseMailer
 *
 * @author Paul Klimov <klimov.paul@gmail.com>
 * @since 2.0
 */
24
abstract class BaseMessage extends Object implements MessageInterface
25
{
26
    /**
27 28 29 30 31 32 33 34 35 36 37 38
     * @var MailerInterface the mailer instance that created this message.
     * For independently created messages this is `null`.
     */
    public $mailer;


    /**
     * Sends this email message.
     * @param MailerInterface $mailer the mailer that should be used to send this message.
     * If no mailer is given it will first check if [[mailer]] is set and if not,
     * the "mail" application component will be used instead.
     * @return boolean whether this message is sent successfully.
39 40 41
     */
    public function send(MailerInterface $mailer = null)
    {
42
        if ($mailer === null && $this->mailer === null) {
43
            $mailer = Yii::$app->getMail();
44 45
        } elseif ($mailer === null) {
            $mailer = $this->mailer;
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
        }
        return $mailer->send($this);
    }

    /**
     * PHP magic method that returns the string representation of this object.
     * @return string the string representation of this object.
     */
    public function __toString()
    {
        // __toString cannot throw exception
        // use trigger_error to bypass this limitation
        try {
            return $this->toString();
        } catch (\Exception $e) {
            trigger_error($e->getMessage() . "\n\n" . $e->getTraceAsString());
            return '';
        }
    }
65
}