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

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

收發(fā)郵件

收發(fā)郵件

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

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

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

配置

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

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

基本用法

一旦 “mailer” 組件被配置,可以使用下面的代碼來發(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ā)送的一個實例。 如果需要的話在這個過程中你可以用上更復(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();

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

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

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

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

撰寫郵件內(nèi)容

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

一個郵件視圖內(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')) ?>

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

Yii::$app->mailer->compose('home-link') // 渲染一個視圖作為郵件內(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é)果將被用來作為 HTML Body,同時純文本正文將被刪除所有 HTML 實體。

視圖渲染結(jié)果可以被包裹進布局,可使用 yii\mail\BaseMailer::htmlLayout 和 yii\mail\BaseMailer::textLayout 來設(shè)置。 它的運行方式跟常規(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()?方法來添加附件的信息:

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

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

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

嵌入圖片

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

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

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

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

測試和調(diào)試

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

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

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

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

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

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