⽤户注册邮箱通知和短信通知详解(php)
分享概要:讲述yii框架,⽤户注册然后以邮箱通知和短信通知⽤户注册状态。短信使⽤阿⾥云,邮箱使⽤swiftmailer插件。
⽀持php~~~
感觉博主写的不错,请⼩伙伴们转载和分享点赞哟!
功能点:⽤户注册通知
⽤户注册类:
public function actionCreateUsers(){
//数据过滤数据判断这个省略了。。。。直接看重点
if($model->save()){ //对⽤户数据的保存
$data = $model->attributes;//获取当前保存⽤户的全部信息
$data['password_original'] =$password; //明⽂密码
//发送邮件通知
\common\utils\Tool::sendMail($model->email, '恭喜你在xxx系统注册成功。', $data, 'usersign') ;//p1 :⽤户邮箱 p2:通知信息标题 p3:⽤户数据 p4:通知信息模板
//通知阿⾥云
SMsDemo::sendMsgOnRegister($model->mobile_phone,$model->real_name,
$model->user_name,$data['password_original']);
}
return $this->redirect('/index');
}
2.邮箱⼯具类:
先在config⾥的main.php添加组件:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',//使⽤swiftmailer扩展优点不占⽤服务器资源内存
'viewPath' => '@common/mail', //模板路径
'useFileTransport' => false,//如果启⽤表⽰邮件发送到服务器并保存,关闭时表⽰真实发送到⽤户邮箱。。。
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'ail.qq', //QQ SSL启⽤端⼝:587/465 (其他邮箱配置请看下⾯提⽰:)
'port' => 465,
'encryption' => 'ssl',// (tls / ssl)根据情况选择符合你的
//⽤户密码放在这⾥不太安全,可以放在数据库⾥然后去取
'username' => 'yyy@xxx',//写⾃⼰的邮箱⽤户名
'password' => 'zzzzz',//密码
],
//发送的邮件信息配置
'messageConfig' => [
'charset' => 'utf-8',//编码
'from' => ['support@mmcuav' => 'uuu'],//uuu修改成⾃⼰的签名随意
],
],
提⽰:
126邮箱:
POP3服务器地址:pop.126(端⼝:110)
SMTP服务器地址:smtp.126(端⼝:25)
139邮箱:
POP3服务器地址:POP.139(端⼝:110)
SMTP服务器地址:SMTP.139(端⼝:25)
163:
POP3服务器地址:pop.163(端⼝:110)
SMTP服务器地址:smtp.163(端⼝:25)
QQ邮箱:
POP3服务器地址:pop.qq(端⼝:110)
SMTP服务器地址:smtp.qq(端⼝:25)
yahoo:
POP3服务器地址:pop.mail.yahoo
SMTP服务器地址:smtp.mail.yahoo
gmail(google)
POP3服务器地址:ail(SSL启⽤端⼝:995)
SMTP服务器地址:ail(SSL启⽤ 端⼝:587)
3.⼯具类
namespace common\utils;
use Yii;
class Tool {
/**
* 邮件发送
* @param type $to 邮件接收⼈多个传数组
* @param type $title 邮件标题
* @param type $data 邮件内容(模板的时候最好使⽤数组)
* @param type $template 邮件模板
* @return int
*/
static function sendMail($to, $title, $data,$template='') {
$mail = !empty($template) ?
Yii::$app->mailer->compose($template,['data'=>$data]) ://这⾥以usesign模板为例
Yii::$app->mailer->compose(); //加载原始配置
$mail->setTo($to); //发送⽬标
$mail->setSubject($title); //标题
/*
*z这⾥可以添加你的附件
*$message->attach('source/file.pdf');//附件图⽚内嵌图⽚在模板中查看
$message->attachContent('Attachment content', ['fileName' => '', 'contentType' => 'text/plain'])//附件⽂本⽂件 */
//要发送的内容
!empty($template)?$mail->setTextBody(''):$mail->setHtmlBody($data);
if ($mail->send()) {
return 1;
}
return 0;
}
}
4:⾃定义邮箱模板:
use yii\helpers\Html;
>
<div class="body">
<div class="container">
<div class="logo">
<img height="20" src="xxxx">//内嵌图⽚
</div>
<div class="panel-body">
<p>
<?php echo $data['user_name'] ?>,您好!
</p>
<p>
账号:
<code><?php echo $data['user_name'] ?></code>
</p>
<p>
密码:
<code><?php echo $data['password_original'] ?></code>
</p>
</div>
</div>
</div>
5.短信通知:
5-1:
1.先去阿⾥云注册:
访问阿⾥云 ,单击页⾯上的 免费注册 按钮。
按照屏幕提⽰完成注册流程并进⾏实名认证,短信服务只⽀持实名认证⽤户使⽤。为了更好地使⽤阿⾥云服务,建议尽快完成实名认证,否则部分阿⾥云服务将⽆法使⽤。具体实名认证流程,请参考 。
步骤 2 获取阿⾥云访问密钥
为了使⽤短信发送API-PHP SDK,您必须申请阿⾥云的访问密钥。
阿⾥云访问秘钥是阿⾥云为⽤户使⽤ API(⾮控制台)来访问其云资源设计的“安全⼝令”。您可以⽤它来签名 API 请求内容以通过服务端的安全验证。
该访问秘钥成对(AccessKeyId 与 AccessKeySecret)⽣成和使⽤。每个阿⾥云⽤户可以创建多对访问秘钥,且可随时启⽤(Active)、禁⽤(Inactive)或者删除已经⽣成的访问秘钥对。
您可以通过阿⾥云控制台的 秘钥管理页⾯ 创建、管理所有的访问秘钥对,且保证它处于“启⽤”状态。由于访问秘钥是阿⾥云对 API 请求进⾏安全验证的关键因⼦,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并⽣成新的替代秘钥对。
重点:
为了成功发送⼀条短信通知,您⾄少需要完成以下步骤
⼀、在控制台完成短信签名与短信模板的申请,获得调⽤接⼝必备的参数
在“短信签名”页⾯完成签名的申请,获得短信签名的字符串
在“短信模板”页⾯完成模板的申请,获得模板ID。
把demo下载好了解压放在项⽬中,我这⾥是放到了 common/utils/ 下⾯。
//阿⾥云
ini_set("display_errors", "on");
require_once 'aliyun-dysms-php-sdk/api_sdk/vendor/autoload.php';
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;
// 加载区域结点配置
Config::load();
class SmsDemo
{ /**
* 注册账号发送通知模板
* @return stdClass
*/
public static function sendMsgOnRegister($phoneNumber,$name,$username,$password) {
// 初始化SendSmsRequest实例⽤于设置的参数
$request = new SendSmsRequest();
// 必填,设置短信接收号码
$request->setPhoneNumbers($phoneNumber);
// 必填,设置签名名称,应严格按"签名名称"填写,请参考: sole.aliyun/dysms.htm#/develop/sign
$request->setSignName("xxxx");
// 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: sole.aliyun/dysms.htm#/develop/template $request->setTemplateCode("yyyy");
// 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
$request->setTemplateParam(json_encode(array( // 短信模板中字段的值
"name"=>$name,
"username"=>$username,
"password"=>$password,
), JSON_UNESCAPED_UNICODE));怎么注册gmail邮箱
// 可选,设置流⽔号
$request->setOutId("55566");
// 选填,上⾏短信扩展码(扩展码字段控制在7位或以下,⽆特殊需求⽤户请忽略此字段)
//$request->setSmsUpExtendCode("234567");
// 发起访问请求
$acsResponse = static::getAcsClient()->getAcsResponse($request);
return $acsResponse;
}
/**
* 批量
* 这⾥我会持续更新需要这个功能的话可以看官⽹也可以联系我Q1694084708
*/
}
感觉博主写的不错,请⼩伙伴们转载和分享点赞哟!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论