yii 邮箱封装
<?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 邮箱封装的更多相关文章
- YII 自封装的批量修改的mysql操作类
<?php /** * Created by PhpStorm. * User: yufen * Date: 2018/8/31 * Time: 9:54 */ namespace app\ba ...
- YII Framework学习教程-YII的异常处理
异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...
- YII model模型和登陆详解
模型是 CModel 或其子类的实例.模型用于保持数据以及与其相关的业务逻辑. 模型是单独的数据对象.它可以是数据表中的一行,或者一个用户输入的表单. 数据对象的每个字段对应模型中的一个属性.每个属性 ...
- yii2 session的使用方法
yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...
- IntelliJ IDEA 2017版 spring-boot 2.0.5 邮件发送简单实例 (三)
一.搭建SpringBoot项目 详见此文:https://www.cnblogs.com/liuyangfirst/p/8298588.html 注意: 需要添加mail依赖的包,同时还添加了lom ...
- Yii2 session的使用方法(1)
yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...
- yii1 session
在 Yii框架中使用session 的笔记: 首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),在Yii框架中,autoStart 属性缺省被设置为true,所以, ...
- 第12.6节 Python标准库其他内置模块导览
一. 文本处理服务 string模块 : 常见的字符串操作 difflib模块: 计算差异的辅助工具 textwrap模块: 文本自动换行与填充,能够格式化文本段落,以适应给定的屏幕宽度: unico ...
- yii框架中邮箱激活(数字签名)
控制器: //发送邮箱,激活账号 public function actionEmail() { $email=Yii::$app->request->get('em ...
随机推荐
- Json对象扩展
1.JSON.stringify(obj/arr) js对象(数组)转换为json对象(数组) 2.JSON.parse(json) json对象(数组)转换为js对象(数组)
- allegro17.2 错误记录
1.网表导入PCB时出现如下错误::error with pin number 'P11'in device ' lfbga176'::Unable to find pin name in adfnc ...
- 3.2.3 SpringMVC注解式开发
SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...
- principal(括号匹配+多组查询)
题目传送门: 把所有括号相匹配的段直接预处理出来就行了 #include <bits/stdc++.h> using namespace std; #define ll long long ...
- ELK日志分析解决方案
概要 ELK(Elasticsearch , Logstash, Kibana的简称)是目前比较流行的日志分析解决方案,核心包括了三个部分 Elasticsearch:日志查询分析引擎 Logstas ...
- 2017 5 31 php面向过程 面向对象1
面向过程的语法定义变量:定义函数:使用变量(输出,赋值,等)调用函数:流程控制(if,switch,for,while等) 面向对象的语法1,定义类:定义类的语法中,只有这3种代码:1.1定义属性(变 ...
- vim : 依赖: vim-common (= 2:7.3.429-2ubuntu2) 但是 2:7.3.429-2ubuntu2.1 正要被安装
sudo apt-get purge vim-common sudo apt-get update sudo apt-get upgrade sudo apt-get install vim Just ...
- <转载>XML操作
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- H3C交换机配置命令(收集)
1:配置登录用户,口令等 <H3C> //用户直行模式提示符,用户视图 <H3C>system-view //进入配置视图 [ ...
- cookie,localStorage和sessionStorage的区别
cookie已经很久没有用过了,一直觉得session Storage和local Storage更加好用一些.