1 フォロワー

抽象クラス yii\mail\BaseMailer

継承yii\mail\BaseMailer » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable, yii\base\ViewContextInterface, yii\mail\MailerInterface
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/mail/BaseMailer.php

BaseMailer は、yii\mail\MailerInterface で必要とされる基本的な機能を実装する基底クラスとして機能します。

具体的な子クラスは、sendMessage() メソッドの実装に焦点を当てる必要があります。

詳細および BaseMailer の使用方法については、yii\mail\BaseMessage およびメーリングに関するガイド記事を参照してください。

公開プロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$fileTransportCallback callable|null $useFileTransport が true の場合、send() によって呼び出される PHP コールバック。 yii\mail\BaseMailer
$fileTransportPath string $useFileTransport が true の場合、電子メールメッセージが保存されるディレクトリ。 yii\mail\BaseMailer
$htmlLayout string|boolean HTML レイアウトビュー名。 yii\mail\BaseMailer
$messageClass string createMessage() によって作成された新しいメッセージインスタンスのデフォルトのクラス名。 yii\mail\BaseMailer
$messageConfig array createMessage() または compose() によって、新しく作成された電子メールメッセージインスタンスに適用される必要がある構成。 yii\mail\BaseMailer
$textLayout string|boolean テキストレイアウトビュー名。 yii\mail\BaseMailer
$useFileTransport boolean 実際の受信者に送信する代わりに、$fileTransportPath の下に電子メールメッセージをファイルとして保存するかどうか。 yii\mail\BaseMailer
$view yii\web\View ビューインスタンス。 yii\mail\BaseMailer
$viewPath string メールメッセージの作成に使用するビューファイルが含まれるディレクトリ。デフォルトは '@app/mail' です。 yii\mail\BaseMailer

公開メソッド

継承されたメソッドを隠す

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクター。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されている、つまり定義されており、null でないかどうかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティを null に設定します。 yii\base\Component
afterSend() このメソッドは、メールの送信直後に呼び出されます。 yii\mail\BaseMailer
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
beforeSend() このメソッドは、メールの送信直前に呼び出されます。 yii\mail\BaseMailer
behaviors() このコンポーネントが動作する必要があるビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
compose() 新しいメッセージインスタンスを作成し、オプションでビューレンダリングを介して本文コンテンツを作成します。 yii\mail\BaseMailer
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
generateMessageFileName() yii\mail\BaseMailer
getBehavior() 名前付きのビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getView() yii\mail\BaseMailer
getViewPath() yii\mail\BaseMailer
hasEventHandlers() 名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\BaseObject
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
render() オプションのパラメーターとレイアウトを使用して、指定されたビューをレンダリングします。 yii\mail\BaseMailer
send() 指定されたメールメッセージを送信します。 yii\mail\BaseMailer
sendMultiple() 複数のメッセージを一度に送信します。 yii\mail\BaseMailer
setView() yii\mail\BaseMailer
setViewPath() yii\mail\BaseMailer
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを隠す

メソッド 説明 定義元
createMessage() 新しいメッセージインスタンスを作成します。 yii\mail\BaseMailer
createView() 指定された構成からビューインスタンスを作成します。 yii\mail\BaseMailer
saveMessage() $fileTransportPath の下にメッセージをファイルとして保存します。 yii\mail\BaseMailer
sendMessage() 指定されたメッセージを送信します。 yii\mail\BaseMailer

イベント

継承されたイベントを隠す

イベント 説明 定義元
EVENT_AFTER_SEND yii\mail\MailEvent 送信直後に発生するイベント。 yii\mail\BaseMailer
EVENT_BEFORE_SEND yii\mail\MailEvent 送信直前に発生するイベント。 yii\mail\BaseMailer

プロパティの詳細

継承されたプロパティを隠す

$fileTransportCallback パブリックプロパティ

$useFileTransport が true の場合、send() によって呼び出される PHP コールバック。コールバックは、電子メールメッセージを保存するために使用されるファイル名を返す必要があります。設定されていない場合、ファイル名は現在のタイムスタンプに基づいて生成されます。

コールバックのシグネチャは

function ($mailer, $message)
$fileTransportPath パブリックプロパティ

$useFileTransport が true の場合、電子メールメッセージが保存されるディレクトリ。

public string $fileTransportPath '@runtime/mail'
$htmlLayout public プロパティ

HTMLレイアウトのビュー名です。これはHTMLメール本文をレンダリングするために使用されるレイアウトです。このプロパティは以下の値を取ることができます。

  • $viewPathに対する相対的なビュー名。例えば、'layouts/html'。
  • パスエイリアス:絶対ビューファイルパスをパスエイリアスとして指定したもの。例えば、'@app/mail/html'。
  • boolean false:レイアウトが無効。
public string|boolean $htmlLayout 'layouts/html'
$messageClass public プロパティ

createMessage() によって作成された新しいメッセージインスタンスのデフォルトのクラス名。

public string $messageClass 'yii\mail\BaseMessage'
$messageConfig public プロパティ

createMessage()またはcompose()によって新しく作成されたメールメッセージインスタンスに適用されるべき設定。fromtosubjecttextBodyhtmlBodyなど、yii\mail\MessageInterfaceで定義された有効なプロパティはすべて設定可能です。

例えば

[
    'charset' => 'UTF-8',
    'from' => 'noreply@mydomain.com',
    'bcc' => 'developer@mydomain.com',
]
public array $messageConfig = []
$textLayout public プロパティ

テキストレイアウトのビュー名です。これはテキストメール本文をレンダリングするために使用されるレイアウトです。このプロパティが取り得る値については、$htmlLayoutを参照してください。

public string|boolean $textLayout 'layouts/text'
$useFileTransport public プロパティ

実際の受信者に送信する代わりに、メールメッセージを$fileTransportPathの下のファイルとして保存するかどうか。これは通常、開発中にデバッグ目的で使用されます。

$fileTransportPathも参照してください。

public boolean $useFileTransport false
$view public プロパティ

ビューインスタンス。このプロパティの型はゲッターとセッターで異なることに注意してください。詳細はgetView()setView()を参照してください。

public yii\web\View $view null
$viewPath public プロパティ

メールメッセージの作成に使用するビューファイルが含まれるディレクトリ。デフォルトは '@app/mail' です。

public string $viewPath null

メソッドの詳細

継承されたメソッドを隠す

__call() public メソッド

定義元: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアが名前付きメソッドを持っているかどうかを確認し、利用可能な場合は実行します。

このメソッドは、不明なメソッドが呼び出されたときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出す場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public メソッド

定義元: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。

すべてのビヘイビアは古いオブジェクトにアタッチされているため、削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public メソッド

定義元: yii\base\BaseObject::__construct()

コンストラクター。

デフォルトの実装は2つのことを行います。

  • 与えられた設定$configでオブジェクトを初期化します。
  • init()を呼び出します。

このメソッドが子クラスでオーバーライドされた場合、推奨されるのは

  • コンストラクタの最後のパラメータが、ここでの$configのような設定配列であること。
  • コンストラクタの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public メソッド

定義元: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、以下の順序で確認し、それに応じて処理します。

  • ゲッターによって定義されたプロパティ:ゲッターの結果を返します
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します

このメソッドは、$value = $component->property;を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

__set()も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティ値、またはビヘイビアのプロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

定義元: yii\base\Component::__isset()

プロパティが設定されている、つまり定義されており、null でないかどうかを確認します。

このメソッドは、以下の順序で確認し、それに応じて処理します。

  • セッターによって定義されたプロパティ:プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ:プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合はfalseを返します

このメソッドは、isset($component->property)を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

定義元: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、以下の順序で確認し、それに応じて処理します。

  • セッターによって定義されたプロパティ: プロパティ値を設定します。
  • "on xyz"の形式のイベント: イベント"xyz"にハンドラをアタッチします。
  • "as xyz"の形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチします。
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定します。

このメソッドは、$component->property = $value;を実行するときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

関連項目: __get().

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

定義元: yii\base\Component::__unset()

コンポーネントプロパティを null に設定します。

このメソッドは、以下の順序で確認し、それに応じて処理します。

  • セッターによって定義されたプロパティ: プロパティ値をnullに設定します。
  • ビヘイビアのプロパティ: プロパティ値をnullに設定します。

このメソッドは、unset($component->property)を実行するときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

関連項目: https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
afterSend() public メソッド

このメソッドは、メールの送信直後に呼び出されます。

メール送信ステータスに基づいて、何らかの事後処理やロギングを行うために、このメソッドをオーバーライドしてもかまいません。このメソッドをオーバーライドする場合は、必ず最初に親の実装を呼び出してください。

public void afterSend ( $message, $isSuccessful )
$message yii\mail\MessageInterface
$isSuccessful boolean

                public function afterSend($message, $isSuccessful)
{
    $event = new MailEvent(['message' => $message, 'isSuccessful' => $isSuccessful]);
    $this->trigger(self::EVENT_AFTER_SEND, $event);
}

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された設定に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach()メソッドを呼び出すことによって、ビヘイビアオブジェクトはこのコンポーネントにアタッチされます。

関連項目: detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの設定。これは以下のいずれかになります。

  • yii\base\Behaviorオブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するためにYii::createObject()に渡されるオブジェクト設定配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義元: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアはその名前でインデックスが付けられ、yii\base\Behaviorオブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための設定配列である必要があります。

関連項目: attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチするビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
beforeSend() public メソッド

このメソッドは、メールの送信直前に呼び出されます。

メッセージの直前準備を行うために、このメソッドをオーバーライドしてもかまいません。このメソッドをオーバーライドする場合は、必ず最初に親の実装を呼び出してください。

public boolean beforeSend ( $message )
$message yii\mail\MessageInterface
return boolean

メール送信を続行するかどうか。

                public function beforeSend($message)
{
    $event = new MailEvent(['message' => $message]);
    $this->trigger(self::EVENT_BEFORE_SEND, $event);
    return $event->isValid;
}

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが動作する必要があるビヘイビアのリストを返します。

子クラスは、ビヘイビアとして振る舞いたいビヘイビアを指定するためにこのメソッドをオーバーライドできます。

このメソッドの戻り値は、ビヘイビア名でインデックスが付けられたビヘイビアオブジェクトまたは設定の配列である必要があります。ビヘイビア設定は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスはyii\base\Behaviorから拡張する必要があることに注意してください。ビヘイビアは、名前を使用するか、匿名で使用してアタッチできます。名前を配列キーとして使用すると、この名前を使用して、後でgetBehavior()を使用してビヘイビアを取得したり、detachBehavior()を使用してデタッチしたりできます。匿名ビヘイビアは取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、自動的に(オンデマンドで)コンポーネントにアタッチされます。

public array behaviors ( )
return array

ビヘイビアの設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義元: yii\base\Component::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、次の場合に読み取ることができます。

  • クラスに指定された名前に関連付けられたゲッターメソッドがある場合 (この場合、プロパティ名は大文字と小文字が区別されません)。
  • クラスに指定された名前のメンバー変数がある場合 ($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合 ($checkBehaviorsがtrueの場合)。

関連項目: canSetProperty().

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか。

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか。

return boolean

プロパティが読み取り可能かどうか。

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

定義元: yii\base\Component::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティが書き込み可能となるのは、

  • クラスが指定された名前に関連付けられたセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスに指定された名前のメンバー変数がある場合 ($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアが、指定された名前の書き込み可能なプロパティを持っている場合($checkBehaviors がtrueの場合)。

参照: canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか。

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか。

return boolean

プロパティが書き込み可能かどうか。

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static メソッド
2.0.14から非推奨。PHP >= 5.5では、代わりに::classを使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
compose() public メソッド

新しいメッセージインスタンスを作成し、オプションでビューレンダリングを介して本文コンテンツを作成します。

public yii\mail\MessageInterface compose ( $view null, array $params = [] )
$view string|array|null

メッセージ本文のレンダリングに使用するビュー。これは次のいずれかになります。

  • 文字列。メールのHTML本文をレンダリングするためのビュー名またはパスエイリアスを表します。この場合、テキスト本文は、HTML本文にstrip_tags()を適用して生成されます。
  • 'html' および/または 'text' 要素を含む配列。 'html' 要素はHTML本文をレンダリングするためのビュー名またはパスエイリアスを参照し、'text' 要素はテキスト本文のレンダリング用です。たとえば、['html' => 'contact-html', 'text' => 'contact-text']など。
  • null。メッセージインスタンスが本文コンテンツなしで返されることを意味します。

レンダリングするビューは、次のいずれかの形式で指定できます。

  • パスエイリアス(例: "@app/mail/contact")。
  • $viewPathの下にある相対ビュー名(例: "contact")。
$params array

ビューファイルで展開され、利用可能になるパラメータ(名前と値のペア)。

return yii\mail\MessageInterface

メッセージインスタンス。

                public function compose($view = null, array $params = [])
{
    $message = $this->createMessage();
    if ($view === null) {
        return $message;
    }
    if (!array_key_exists('message', $params)) {
        $params['message'] = $message;
    }
    $this->_message = $message;
    if (is_array($view)) {
        if (isset($view['html'])) {
            $html = $this->render($view['html'], $params, $this->htmlLayout);
        }
        if (isset($view['text'])) {
            $text = $this->render($view['text'], $params, $this->textLayout);
        }
    } else {
        $html = $this->render($view, $params, $this->htmlLayout);
    }
    $this->_message = null;
    if (isset($html)) {
        $message->setHtmlBody($html);
    }
    if (isset($text)) {
        $message->setTextBody($text);
    } elseif (isset($html)) {
        if (preg_match('~<body[^>]*>(.*?)</body>~is', $html, $match)) {
            $html = $match[1];
        }
        // remove style and script
        $html = preg_replace('~<((style|script))[^>]*>(.*?)</\1>~is', '', $html);
        // strip all HTML tags and decoded HTML entities
        $text = html_entity_decode(strip_tags($html), ENT_QUOTES | ENT_HTML5, Yii::$app ? Yii::$app->charset : 'UTF-8');
        // improve whitespace
        $text = preg_replace("~^[ \t]+~m", '', trim($text));
        $text = preg_replace('~\R\R+~mu', "\n\n", $text);
        $message->setTextBody($text);
    }
    return $message;
}

            
createMessage() protected メソッド

新しいメッセージインスタンスを作成します。

新しく作成されたインスタンスは、$messageConfigで指定された構成で初期化されます。構成で 'class' が指定されていない場合は、$messageClass が新しいメッセージインスタンスのクラスとして使用されます。

protected yii\mail\MessageInterface createMessage ( )
return yii\mail\MessageInterface

メッセージインスタンス。

                protected function createMessage()
{
    $config = $this->messageConfig;
    if (!array_key_exists('class', $config)) {
        $config['class'] = $this->messageClass;
    }
    $config['mailer'] = $this;
    return Yii::createObject($config);
}

            
createView() protected メソッド

指定された構成からビューインスタンスを作成します。

protected yii\web\View createView ( array $config )
$config array

ビュー構成。

return yii\web\View

ビューインスタンス。

                protected function createView(array $config)
{
    if (!array_key_exists('class', $config)) {
        $config['class'] = View::className();
    }
    return Yii::createObject($config);
}

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はNull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public メソッド

定義元: yii\base\Component::ensureBehaviors()

behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
generateMessageFileName() public メソッド

public string generateMessageFileName ( )
return string

$useFileTransportがtrueの場合に、メッセージを保存するためのファイル名。

                public function generateMessageFileName()
{
    $time = microtime(true);
    $timeInt = (int) $time;
    return date('Ymd-His-', $timeInt) . sprintf('%04d', (int) (($time - $timeInt) * 10000)) . '-' . sprintf('%04d', random_int(0, 10000)) . '.eml';
}

            
getBehavior() public メソッド

定義元: yii\base\Component::getBehavior()

名前付きのビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。存在しない場合は null。

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getView() public メソッド

public yii\web\View getView ( )
return yii\web\View

ビューインスタンス。

                public function getView()
{
    if (!is_object($this->_view)) {
        $this->_view = $this->createView($this->_view);
    }
    return $this->_view;
}

            
getViewPath() public メソッド

public string getViewPath ( )
return string

メールメッセージの作成に使用するビューファイルが含まれるディレクトリ。デフォルトは '@app/mail' です。

                public function getViewPath()
{
    if ($this->_viewPath === null) {
        $this->setViewPath('@app/mail');
    }
    return $this->_viewPath;
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにハンドラがアタッチされているかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public メソッド

定義元: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドが定義されている条件:

  • クラスが指定された名前のメソッドを持っている
  • アタッチされたビヘイビアが、指定された名前のメソッドを持っている($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

メソッドが定義されているかどうか

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public メソッド

定義元: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されている条件:

  • クラスが指定された名前に関連付けられた getter または setter メソッドを持っている(この場合、プロパティ名はcase-insensitiveです)。
  • クラスに指定された名前のメンバー変数がある場合 ($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアが、指定された名前のプロパティを持っている($checkBehaviors が true の場合)。

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか。

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか。

return boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public メソッド

定義元: yii\base\BaseObject::init()

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
}

            
off() public メソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは on() の反対です。

注:イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラは残ります。

on() も参照してください。

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラ。null の場合、名前付きイベントにアタッチされたすべてのハンドラが削除されます。

return boolean

ハンドラが見つかってデタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public メソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラは有効なPHPコールバックである必要があります。以下にいくつかの例を示します

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラは、以下のシグネチャで定義する必要があります。

function ($event)

ここで、$event は、イベントに関連付けられたパラメーターを含む yii\base\Event オブジェクトです。

2.0.14 以降、ワイルドカードパターンとしてイベント名を指定できます

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

off() も参照してください。

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler 呼び出し可能

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されたときに、このデータには yii\base\Event::$data を介してアクセスできます。

$append boolean

既存のハンドラリストの最後に新しいイベントハンドラを追加するかどうか。false の場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
render() public メソッド

オプションのパラメーターとレイアウトを使用して、指定されたビューをレンダリングします。

ビューは、$view コンポーネントを使用してレンダリングされます。

public string render ( $view, $params = [], $layout false )
$view string

ビュー名、またはビューファイルのパスエイリアス

$params array

ビューファイルで展開され、利用可能になるパラメータ(名前と値のペア)。

$layout string|boolean

レイアウトビュー名、またはパスエイリアス。false の場合、レイアウトは適用されません。

return string

レンダリング結果。

                public function render($view, $params = [], $layout = false)
{
    $output = $this->getView()->render($view, $params, $this);
    if ($layout !== false) {
        return $this->getView()->render($layout, ['content' => $output, 'message' => $this->_message], $this);
    }
    return $output;
}

            
saveMessage() protected メソッド

$fileTransportPath の下にメッセージをファイルとして保存します。

protected boolean saveMessage ( $message )
$message yii\mail\MessageInterface
return boolean

メッセージが正常に保存されたかどうか。

                protected function saveMessage($message)
{
    $path = Yii::getAlias($this->fileTransportPath);
    if (!is_dir($path)) {
        mkdir($path, 0777, true);
    }
    if ($this->fileTransportCallback !== null) {
        $file = $path . '/' . call_user_func($this->fileTransportCallback, $this, $message);
    } else {
        $file = $path . '/' . $this->generateMessageFileName();
    }
    file_put_contents($file, $message->toString());
    return true;
}

            
send() public メソッド

指定されたメールメッセージを送信します。

このメソッドは、メールが送信されることに関するメッセージをログに記録します。$useFileTransport が true の場合、メールは $fileTransportPath の下にファイルとして保存されます。そうでない場合、メールを受信者に送信するために sendMessage() を呼び出します。子クラスは、実際のメール送信ロジックを使用して sendMessage() を実装する必要があります。

public boolean send ( $message )
$message yii\mail\MessageInterface

送信されるメールメッセージインスタンス。

return boolean

メッセージが正常に送信されたかどうか。

                public function send($message)
{
    if (!$this->beforeSend($message)) {
        return false;
    }
    $address = $message->getTo();
    if (is_array($address)) {
        $address = implode(', ', array_keys($address));
    }
    Yii::info('Sending email "' . $message->getSubject() . '" to "' . $address . '"', __METHOD__);
    if ($this->useFileTransport) {
        $isSuccessful = $this->saveMessage($message);
    } else {
        $isSuccessful = $this->sendMessage($message);
    }
    $this->afterSend($message, $isSuccessful);
    return $isSuccessful;
}

            
sendMessage() protected abstract メソッド

指定されたメッセージを送信します。

このメソッドは、実際のメール送信ロジックを持つ子クラスによって実装される必要があります。

protected abstract boolean sendMessage ( $message )
$message yii\mail\MessageInterface

送信されるメッセージ。

return boolean

メッセージが正常に送信されたかどうか。

                abstract protected function sendMessage($message);

            
sendMultiple() public メソッド

複数のメッセージを一度に送信します。

デフォルトの実装では、単に send() を複数回呼び出します。子クラスは、複数のメッセージをより効率的に送信する方法を実装するために、このメソッドをオーバーライドできます。

public integer sendMultiple ( array $messages )
$messages array

送信される必要があるメールメッセージのリスト。

return integer

正常に送信されたメッセージの数。

                public function sendMultiple(array $messages)
{
    $successCount = 0;
    foreach ($messages as $message) {
        if ($this->send($message)) {
            $successCount++;
        }
    }
    return $successCount;
}

            
setView() public メソッド

public void setView ( $view )
$view array|yii\web\View

メッセージ本文のレンダリングに使用されるビューインスタンスまたはその配列構成。

throws yii\base\InvalidConfigException

不正な引数の場合。

                public function setView($view)
{
    if (!is_array($view) && !is_object($view)) {
        throw new InvalidConfigException('"' . get_class($this) . '::view" should be either object or configuration array, "' . gettype($view) . '" given.');
    }
    $this->_view = $view;
}

            
setViewPath() public メソッド

public void setViewPath ( $path )
$path string

メールメッセージを作成するためのビューファイルを含むディレクトリ。これは絶対パスまたはパスエイリアスとして指定できます。

                public function setViewPath($path)
{
    $this->_viewPath = Yii::getAlias($path);
}

            
trigger() public メソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドは、イベントの発生を表します。クラスレベルのハンドラーを含む、イベントに添付されたすべてのハンドラーを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合、デフォルトの yii\base\Event オブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            

イベントの詳細

継承されたプロパティを隠す

EVENT_AFTER_SEND yii\mail\MailEvent 型のイベント

送信直後に発生するイベント。

EVENT_BEFORE_SEND yii\mail\MailEvent 型のイベント

送信の直前に発生するイベント。yii\mail\MailEvent::$isValid を false に設定すると、送信をキャンセルできます。