国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

symfony mailer 郵件插件

v1.1.2 版本
2023-06-07 版本更新時(shí)間
2983 安裝
4 star

簡(jiǎn)介

基于 symfony mailer二次開(kāi)發(fā) 支持郵件模板、純文本、附件郵件發(fā)送以及更多郵件功能, 郵件發(fā)送簡(jiǎn)單到只需一行代碼

安裝

composer require yzh52521/webman-mailer

php版本要求在php7.2.5 +

使用

配置

配置文件 config/plugin/yzh52521/mailer/app.php 內(nèi)容如下

return [
    'enable'   => true,
    'mailer'    =>[
            'scheme'   => 'smtp',// "smtps": using TLS, "smtp": without using TLS.
            'host'     => '', // 服務(wù)器地址
            'username' => '', //用戶名
            'password' => '', // 密碼
            'port'     => 25, // SMTP服務(wù)器端口號(hào),一般為25
            'options'  => [], // See: https://symfony.com/doc/current/mailer.html#tls-peer-verification
    ],
    'from'   => [
        'address' => 'hello@example.com',
        'name'    => 'Example',
    ],
];

or

return [
    'enable'   => true,
    'mailer'    =>[
            'dsn'      => 'smtp://username:password@smtp.example.com:25', //默認(rèn)優(yōu)先使用該配置
    ],
    'from'   => [
        'address' => 'hello@example.com',
        'name'    => 'Example',
    ],
];

優(yōu)雅的發(fā)送郵件

use yzh52521\mailer\Mailer;

Mailer::setFrom('10086@qq.com')
      ->setTo('your-mail@domain.com')
      ->setSubject('純文本測(cè)試')
      ->setTextBody('歡迎您使用webman-mailer')
      ->send();

創(chuàng)建實(shí)例

不傳遞任何參數(shù)表示使用配置文件里默認(rèn)的配置

$mailer = new yzh52521\mailer\mail\Mailer();

設(shè)置發(fā)件人

發(fā)件人郵箱地址必須和配配置里的 username 一致

$mailer->setFrom('10086@qq.com');
$mailer->setFrom(['10086@qq.com'=>'發(fā)件人']);
or
$mailer->addFrom('10086@qq.com');
$mailer->addFrom(['10086@qq.com'=>'發(fā)件人']);

設(shè)置收件人

以下幾種方式任選一種

$mailer->setTo('10086@qq.com');
$mailer->setTo(['tianpian0805@qq.com', '10086@qq.com']);
or
$mailer->addTo('10086@qq.com');
$mailer->addTo(['tianpian0805@qq.com', '10086@qq.com']);

設(shè)置抄送

以下幾種方式任選一種

$mailer->setCc('10086@qq.com');
$mailer->setCc(['tianpian0805@qq.com', '10086@qq.com']);
or
$mailer->addCc('10086@qq.com');
$mailer->addCc(['tianpian0805@qq.com', '10086@qq.com']);

設(shè)置暗抄送

以下幾種方式任選一種

$mailer->setBcc('10086@qq.com');
$mailer->setBcc(['tianpian0805@qq.com', '10086@qq.com']);
or
$mailer->addBcc('10086@qq.com');
$mailer->addBcc(['tianpian0805@qq.com', '10086@qq.com']);

設(shè)置回復(fù)郵件地址

$mailer->setReplyTo(['10086@qq.com']);
$mailer->setReplyTo('10086@qq.com');
or

$mailer->addReplyTo(['10086@qq.com']);
$mailer->addReplyTo('10086@qq.com');

設(shè)置郵件主題

$mailer->setSubject('郵件主題');

設(shè)置郵件內(nèi)容 - 純文本

$mailer->setTextBody('歡迎使用webman-mailer');

或者使用變量替換純文本內(nèi)容

$mailer->setTextBody('歡迎使用{name}', ['name' => 'webman-mailer']);

設(shè)置富文本郵件內(nèi)容 - HTML

$mailer->setHtmlBody('<p>歡迎使用webman-mailer</p>');

或者使用變量替換HTML內(nèi)容

$mailer->setHtmlBody('<p>歡迎使用{name}</p>', ['name' => 'webman-mailer']);

設(shè)置郵件內(nèi)容 - 模板

自動(dòng)使用webman 使用的模版 相關(guān)配置在 config/view.php

模板的使用, 具體請(qǐng)看webman視圖怎么用, 第二個(gè)參數(shù)是要進(jìn)行模板賦值的數(shù)組
http://www.wtbis.cn/doc/webman/view.html

這里主要介紹thinkphp模版的使用

$mailer->view('mail/register');
$mailer->view('mail/register', ['account' => $account, 'name' => $name]);

將圖片作為元數(shù)據(jù)嵌入到郵件中

郵件內(nèi)容中包含圖片的, 可以直接指定 img 標(biāo)簽的 src 屬性為遠(yuǎn)程圖片地址, 此處圖片地址必須為遠(yuǎn)程圖片地址, 必須為一個(gè)帶域名的完整圖片鏈接, 這似乎很麻煩, 所以你還可以將圖片作為元數(shù)據(jù)嵌入到郵件中,
至于其他文件是否也可以嵌入請(qǐng)自己嘗試

下面介紹一下 webman-mailer 如何快速簡(jiǎn)便的將圖片元數(shù)據(jù)嵌入到郵件中:

配置嵌入標(biāo)簽

嵌入元數(shù)據(jù)需要在模板賦值或者使用 setHtmlBody() 傳遞變量時(shí), 給變量添加特殊的標(biāo)簽, 該嵌入標(biāo)簽?zāi)J(rèn)為 cid:, 你可以修改配置文件中 embed 項(xiàng), 修改為你想要的形式

模板或HTML中設(shè)置變量

在模板中, 例如 ThinkPHP框架 都是使用 {$var} 的形式傳遞變量, 假設(shè)變量為 image_src, 那么模板中填寫(xiě) {$image_src}, 如果是在HTML中, 請(qǐng)使用 {image_src},
注意如果修改過(guò)左、右定界符請(qǐng)使用自己定義的左右定界符

傳遞變量參數(shù)和值

setHtmlBody()view() 方法的第二個(gè)參數(shù)里, 該數(shù)組必須有一個(gè)變量, 格式為 ['cid:image_src'] => '/path/to/image.jpg']
或者 ['cid:image_src'] => ['file_stream', 'filename','filemime']], 即參數(shù)數(shù)組的鍵名是上面配置的 嵌入標(biāo)簽 + 變量名, 但值有兩種情況:

第一, 如果值為字符串, 則該值為圖片的路徑 (絕對(duì)路徑或相對(duì)路徑) 或者 有效的url地址
第二, 如果值為數(shù)組, 數(shù)組為 ['stream','name','mime'] 的形式, 其中 stream 表示圖片的數(shù)據(jù)流,
即是未保存的文件數(shù)據(jù)流, 例如 fopen() 方法獲取的文件數(shù)據(jù)流, 第二個(gè)參數(shù)為文件名, 默認(rèn)為 image,第三個(gè)參數(shù)可選, 為文件的mime類(lèi)型, 默認(rèn)為 null

示例

$mailer->setForm('10086@qq.com')
       ->setTo('10086@qq.com') 
       ->setSubject('測(cè)試郵件模板中嵌入圖片元數(shù)據(jù)')
       ->view('mail/index', [
        'date' => date('Y-m-d H:i:s'),     
        'cid:image' => '/path/to/images/image.jpg',
        // 'cid:image' => '/path/to/images/image.jpg',
        // 'cid:image' => [fopen('/path/to/images/image.jpg','r')],
        // 'cid:image' => [fopen('/path/to/images/image.jpg','r'), 'image','image/jpg'],
     ])
    ->send();

其中模板的內(nèi)容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>測(cè)試郵件</title>
</head>
<body>
<p>尊敬的yzh52521:</p>
<p>     這是一封模板測(cè)試郵件</p>
<p>{$date}</p>
<p>
    <img src="{$image}" alt="">
</p>
</body>
</html>

在 HTML 中使用一樣:

$mailer
    ->setForm('10086@qq.com')
    ->setTo('10086@qq.com') 
    ->setSubject('測(cè)試郵件模板中嵌入圖片元數(shù)據(jù)')
    ->setHtmlBody('<img src="{image}" />圖片測(cè)試', [
        'cid:image' => '/path/to/images/image.jpg',
        // 'cid:image' => '/path/to/images/image.jpg',
        // 'cid:image' => [fopen('/path/to/images/image.jpg','r')],
        // 'cid:image' => [fopen('/path/to/images/image.jpg','r'), 'image','image/jpg')],
     ])
    ->send();

添加附件

$mailer->attach('/path/to/images/file.jpg');

$mailer->attachContent(fopen('/path/to/documents/contract.doc', 'r'))

或者指定附件的文件名

$mailer->attach('/path/to/images/foo.jpg', ['fileName'=>文件名.jpg','contentType'=>'image/jpeg']);

$mailer->attachContent(fopen('/path/to/documents/contract.doc', 'r'), ['fileName'=>文件名.doc','contentType'=>'application/msword'])

設(shè)置消息加密/簽名

消息加密
$encrypter=new SMimeEncrypter('/path/to/certificate.crt');
$mailer->encryper = $encryptor;

相關(guān)文檔 https://symfony.com/doc/current/mailer.html#encrypting-messages

簽名
$signer = new DkimSigner('/path/to/private-key.key', 'example.com', 'sf');
or
$signer = new SMimeSigner('/path/to/certificate.crt', '/path/to/certificate-private-key.key');

$mailer->signer =$signer;

相關(guān)文檔 https://symfony.com/doc/current/mailer.html#signing-messages

設(shè)置字符編碼

$mailer->setCharset('utf8');

設(shè)置郵件優(yōu)先級(jí)

$mailer->setPriority(1);
// 可選值有: 
// 1 Highest
// 2 High
// 3 Normal
// 4 Low
// 5 Lowest

發(fā)送郵件

$mailer->send();

使用匿名函數(shù) $message是 \Symfony\Component\Mime\Email 對(duì)象

$mailer->send(function ($mailer,$message) {
    $mailer->setFrom('10086@qq.com')
           ->setTo('10086@qq.com')
           ->setSubject('測(cè)試郵件')
           ->setTextBody('測(cè)試內(nèi)容');
});

第二個(gè)參數(shù)是數(shù)組, 可以重新設(shè)置郵件配置

$mailer->send(
    function ($message) {
         $mailer->setFrom('10086@qq.com')
           ->setTo('10086@qq.com')
           ->setSubject('測(cè)試郵件')
           ->setTextBody('測(cè)試內(nèi)容');
            },
            [
                'scheme'=>'',
                'host'     => '', // 服務(wù)器地址
                'username' => '', //用戶名
                'password' => '', // 密碼
                'port'     => 25, // SMTP服務(wù)器端口號(hào),一般為25
            ]
            );

郵件發(fā)送失敗會(huì)直接以異常拋出, 或者可以通過(guò) getError() 獲取錯(cuò)誤信息

$mailer->getError();

預(yù)覽郵件內(nèi)容

$mailer->sender();

使用 getHeaders()getHeadersString() 方法可以獲取頭信息
getHeaders() 返回的是頭信息數(shù)組, getHeadersString() 返回的是頭信息字符串

效果圖(可選)

贊助商