<?php

class Mailer
{ private static $obj;
private static $config; public static function getMailer()
{ if (!is_object(self::$obj)) {
self::$config = [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.163.com',
'username' => 'xxx@163.com',
'password' => 'xxx',
'port' => '994',
'encryption' => 'ssl', //ssl tls
]; self::$obj = \Yii::createObject([
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
'transport' => self::$config,
]);
} return self::$obj;
} public static function send($toEmail, $subject, array $compose)
{
$user = \Wskm::getUser(); if ($compose) {
        //同时设置2种内容,让用户的偏好自己选择
self::getMailer()->compose(
//['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'], ['user' => $user]
//['html' => 'passwordResetToken-html'], ['user' => $user]
$compose
);
}else{
self::getMailer()->setBody('My <em>amazing</em> body', 'text/html'); self::getMailer()->addPart('My amazing body in plain text', 'text/plain');
}
//https://swiftmailer.symfony.com/docs/messages.html //addTo addCc addBcc
//$message->setTo(['some@address.tld', 'other@address.tld']);
//$message->setCc([
// 'person1@example.org', 'person2@otherdomain.org' => 'Person 2 Name',
//]); //->attach(Swift_Attachment::fromPath('my-document.pdf')->setFilename('cool.jpg')) /*
// Create the message
$message = new Swift_Message('My subject'); // Set the body
$message->setBody(
'<html>' .
' <body>' .
' Here is an image <img src="' . // Embed the file
$message->embed(Swift_Image::fromPath('image.png')) .
'" alt="Image" />' .
' Rest of message' .
' </body>' .
'</html>',
'text/html' // Mark the content-type as HTML
);
*/ /*
* 验证
use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\RFCValidation; $validator = new EmailValidator();
$validator->isValid("example@example.com", new RFCValidation());
*/ /*
* 加密
$smimeSigner = new Swift_Signers_SMimeSigner();
$smimeSigner->setSignCertificate('/path/to/certificate.pem', ['/path/to/private-key.pem', 'passphrase']);
$message->attachSigner($smimeSigner);
*/ /*
* 回执
$MESSAGE->setReadReceiptTo('你@地址。 TLD ');
*/ /**
* ->setCharset('iso-8859-2'); 编码
* ->setPriority(2); 设置优先级,1-5
*/ return self::getMailer()->compose(
//['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'], ['user' => $user]
['html' => 'passwordResetToken-html'], ['user' => $user]
)
->setFrom([ self::$config['username'] => 'test robot'])
->setTo($toEmail)
->setSubject($subject)
->send();
} }

yii 邮箱封装的更多相关文章

  1. YII 自封装的批量修改的mysql操作类

    <?php /** * Created by PhpStorm. * User: yufen * Date: 2018/8/31 * Time: 9:54 */ namespace app\ba ...

  2. YII Framework学习教程-YII的异常处理

    异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...

  3. YII model模型和登陆详解

    模型是 CModel 或其子类的实例.模型用于保持数据以及与其相关的业务逻辑. 模型是单独的数据对象.它可以是数据表中的一行,或者一个用户输入的表单. 数据对象的每个字段对应模型中的一个属性.每个属性 ...

  4. yii2 session的使用方法

    yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...

  5. IntelliJ IDEA 2017版 spring-boot 2.0.5 邮件发送简单实例 (三)

    一.搭建SpringBoot项目 详见此文:https://www.cnblogs.com/liuyangfirst/p/8298588.html 注意: 需要添加mail依赖的包,同时还添加了lom ...

  6. Yii2 session的使用方法(1)

    yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...

  7. yii1 session

    在 Yii框架中使用session 的笔记: 首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),在Yii框架中,autoStart 属性缺省被设置为true,所以, ...

  8. 第12.6节 Python标准库其他内置模块导览

    一. 文本处理服务 string模块 : 常见的字符串操作 difflib模块: 计算差异的辅助工具 textwrap模块: 文本自动换行与填充,能够格式化文本段落,以适应给定的屏幕宽度: unico ...

  9. yii框架中邮箱激活(数字签名)

    控制器: //发送邮箱,激活账号   public function actionEmail()   {        $email=Yii::$app->request->get('em ...

随机推荐

  1. 快递单号自动识别接口API-trackingmore

    一.快递单号自动识别接口功能说明 (1)PC电脑端.移动APP或者自建网站集成物流查询功能时,只需要用户输入单号即可,不需要输入快递公司. (2)此接口可以配合Trackingmore的快递查询API ...

  2. wordCount剖析Spark模型

  3. Spring Cloud微服务架构图

  4. Unity 特写镜头

    using UnityEngine; public class Camera_Feature : MonoBehaviour { public static Camera_Feature instan ...

  5. JavaScript学习day01

    一,改变 HTML 内容 (1)方法一: document.getElementById("demo").innerHTML= "My First JavaScriptF ...

  6. windows下redis 配置文件参数说明

    1.先看redis.windows.conf 文件 # Redis configuration file example # Note on units: when memory size is ne ...

  7. oracle之数据恢复(delete误删)

    ALTER TABLE TA_申请材料表 ENABLE row movement ; flashback table TA_申请材料表 to timestamp to_timestamp('2019- ...

  8. PKCS RSA执行标准

    RSA是一种算法,但是,在相关应用的时候,还是需要有一些标准的.这就是pkcs.现在的各种程序中,基本都是遵循这个标准来使用RSA的.最近陆续读取RSA相关的内容进行学习. RSA官网:https:/ ...

  9. C# 求链表 list 中 属性的 最大值 最小值

    获取链表List中对象属性最大值最小值(Max,Min)的方法: 1.创建一个类,类中有一个属性A /// <summary> /// 用于测试属性的类 /// </summary& ...

  10. CSS制作渐变背景色

    <style type="text/css"> #grad1 { background: -webkit-linear-gradient(#C2F2F0,#); /* ...