亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
閱讀前篇 簡(jiǎn)介 Yii 是什么 從 Yii 1.1 升級(jí) 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問(wèn)候 使用Forms 數(shù)據(jù)庫(kù)應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過(guò)濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請(qǐng)求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請(qǐng)求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯(cuò)誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動(dòng)加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫(kù)工作 數(shù)據(jù)庫(kù)訪問(wèn) (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫(kù)遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗(yàn)證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(yè)(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實(shí)踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁(yè)面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯(cuò)誤處理(Error Handling) 開(kāi)發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測(cè)試 概述(Overview) 配置測(cè)試環(huán)境(Testing environment setup) 單元測(cè)試(Unit Tests) 功能測(cè)試(Function Tests) 驗(yàn)收測(cè)試(Acceptance Tests) 測(cè)試夾具(Fixtures) 高級(jí)專題 高級(jí)應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺(tái)命令 核心驗(yàn)證器(Core Validators) 國(guó)際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
characters

收發(fā)郵件

收發(fā)郵件

注意:本節(jié)正在開(kāi)發(fā)中。

Yii 支持組成和發(fā)送電子郵件。然而,該框架提供的只有內(nèi)容組成功能和基本接口。實(shí)際的郵件發(fā)送機(jī)制可以通過(guò)擴(kuò)展提供, 因?yàn)椴煌捻?xiàng)目可能需要不同的實(shí)現(xiàn)方式,它通常取決于外部服務(wù)和庫(kù)。

大多數(shù)情況下你可以使用?yii2-swiftmailer?官方擴(kuò)展。

配置

郵件組件配置取決于你所使用的擴(kuò)展。一般來(lái)說(shuō)你的應(yīng)用程序配置應(yīng)如下:

return [
    //....
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
        ],
    ],
];

基本用法

一旦 “mailer” 組件被配置,可以使用下面的代碼來(lái)發(fā)送郵件:

Yii::$app->mailer->compose()
    ->setFrom('from@domain.com')
    ->setTo('to@domain.com')
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->setHtmlBody('<b>HTML content</b>')
    ->send();

在上面的例子中所述的?compose()?方法創(chuàng)建了電子郵件消息,這是填充和發(fā)送的一個(gè)實(shí)例。 如果需要的話在這個(gè)過(guò)程中你可以用上更復(fù)雜的邏輯:

$message = Yii::$app->mailer->compose();
if (Yii::$app->user->isGuest) {
    $message->setFrom('from@domain.com')
} else {
    $message->setFrom(Yii::$app->user->identity->email)
}
$message->setTo(Yii::$app->params['adminEmail'])
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->send();

注意:每個(gè) “mailer” 的擴(kuò)展也有兩個(gè)主要類別:“Mailer” 和 “Message”。 “Mailer” 總是知道類名和具體的 “Message”。 不要試圖直接實(shí)例 “Message” 對(duì)象 - 而是始終使用?compose()?方法。

你也可以一次發(fā)送幾封郵件:

$messages = [];
foreach ($users as $user) {
    $messages[] = Yii::$app->mailer->compose()
        // ...
        ->setTo($user->email);
}
Yii::$app->mailer->sendMultiple($messages);

一些特定的擴(kuò)展可能會(huì)受益于這種方法,使用單一的網(wǎng)絡(luò)消息等。

撰寫郵件內(nèi)容

Yii 允許通過(guò)特殊的視圖文件來(lái)撰寫實(shí)際的郵件內(nèi)容。默認(rèn)情況下,這些文件應(yīng)該位于 “@app/mail” 路徑。

一個(gè)郵件視圖內(nèi)容的例子:

<?phpuse yii\helpers\Html;
use yii\helpers\Url;


/* @var $this \yii\web\View view component instance *//* @var $message \yii\mail\BaseMessage instance of newly created mail message */

?>
<h2>This message allows you to visit our site home page by one click</h2>
<?= Html::a('Go to home page', Url::home('http')) ?>

為了通過(guò)視圖文件撰寫正文可傳遞視圖名稱到?compose()?方法中:

Yii::$app->mailer->compose('home-link') // 渲染一個(gè)視圖作為郵件內(nèi)容
    ->setFrom('from@domain.com')
    ->setTo('to@domain.com')
    ->setSubject('Message subject')
    ->send();

你也可以在?compose()?方法中傳遞一些視圖所需參數(shù),這些參數(shù)可以在視圖文件中使用:

Yii::$app->mailer->compose('greetings', [
    'user' => Yii::$app->user->identity,
    'advertisement' => $adContent,
]);

你可以指定不同的視圖文件的 HTML 和純文本郵件內(nèi)容:

Yii::$app->mailer->compose([
    'html' => 'contact-html',
    'text' => 'contact-text',
]);

如果指定視圖名稱為純字符串,它的渲染結(jié)果將被用來(lái)作為 HTML Body,同時(shí)純文本正文將被刪除所有 HTML 實(shí)體。

視圖渲染結(jié)果可以被包裹進(jìn)布局,可使用 yii\mail\BaseMailer::htmlLayout 和 yii\mail\BaseMailer::textLayout 來(lái)設(shè)置。 它的運(yùn)行方式跟常規(guī)應(yīng)用程序的布局是一樣的。布局可用于設(shè)置郵件 CSS 樣式或其他共享內(nèi)容:

<?phpuse yii\helpers\Html;

/* @var $this \yii\web\View view component instance *//* @var $message \yii\mail\MessageInterface the message being composed *//* @var $content string main view render result */?><?php $this->beginPage() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=<?= Yii::$app->charset ?>" />
    <style type="text/css">
        .heading {...}
        .list {...}
        .footer {...}
    </style>
    <?php $this->head() ?>
</head>
<body>
    <?php $this->beginBody() ?>
    <?= $content ?>
    <div class="footer">With kind regards, <?= Yii::$app->name ?> team</div>
    <?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>

文件附件

你可以使用?attach()?和?attachContent()?方法來(lái)添加附件的信息:

$message = Yii::$app->mailer->compose();

// 附件來(lái)自本地文件$message->attach('/path/to/source/file.pdf');

// 動(dòng)態(tài)創(chuàng)建一個(gè)文件附件$message->attachContent('Attachment content', ['fileName' => 'attach.txt', 'contentType' => 'text/plain']);

嵌入圖片

你可以使用?embed()?方法將圖片插入到郵件內(nèi)容。此方法返回會(huì)圖片 ID ,這將用在 "img" 標(biāo)簽中。 當(dāng)通過(guò)視圖文件來(lái)寫信時(shí),這種方法易于使用:

Yii::$app->mailer->compose('embed-email', ['imageFileName' => '/path/to/image.jpg'])
    // ...
    ->send();

然后在該視圖文件中,你可以使用下面的代碼:

<img src="/docs/guide/2.0/<?= $message->embed($imageFileName); ?>">

測(cè)試和調(diào)試

開(kāi)發(fā)人員常常要檢查一下,有什么電子郵件是由應(yīng)用程序發(fā)送的,他們的內(nèi)容是什么等。這可通過(guò)yii\mail\BaseMailer::useFileTransport?來(lái)檢查。 如果開(kāi)啟這個(gè)選項(xiàng),會(huì)把郵件信息保存在本地文件而不是發(fā)送它們。這些文件保存在yii\mail\BaseMailer::fileTransportPath?中,默認(rèn)在 '@runtime/mail' 。

提示: 你可以保存這些信息到本地文件或者把它們發(fā)送出去,但不能同時(shí)兩者都做。

郵件信息文件可以在一個(gè)普通的文本編輯器中打開(kāi),這樣你就可以瀏覽實(shí)際的郵件標(biāo)題,內(nèi)容等。這種機(jī)制可以用來(lái)調(diào)試應(yīng)用程序或運(yùn)行單元測(cè)試。

提示: 該郵件信息文件是會(huì)被?\yii\mail\MessageInterface::toString()?轉(zhuǎn)成字符串保存的,它依賴于實(shí)際在應(yīng)用程序中使用的郵件擴(kuò)展。

創(chuàng)建自己的郵件解決方案

為了創(chuàng)建你自己的郵件解決方案,你需要?jiǎng)?chuàng)建兩個(gè)類,一個(gè)用于 “Mailer”,另一個(gè)用于 “Message”。 你可以使用?yii\mail\BaseMailer和?yii\mail\BaseMessage?作為基類。這些類已經(jīng)實(shí)現(xiàn)了基本的邏輯,這在本指南中有介紹。 然而,它們的使用不是必須的,它實(shí)現(xiàn)了yii\mail\MailerInterface?和?yii\mail\MessageInterface?接口。 然后,你需要實(shí)現(xiàn)所有 abstract 方法來(lái)構(gòu)建解決方案。
Previous article: Next article: