时间:2021-07-01 10:21:17 帮助过:31人阅读
这篇文章介绍的内容是关于yii2 发送邮件功能,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
首先要实现邮件功能,我们需要了解yii2有邮件类的概念
yii2 为了解决我们邮件发送问题,为我们提供了swiftMailer扩展。
那么什么是swiftMailer呢?
Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。
首先在我们的main.php中配置我们的mailer
组件
//主要是对组件中各种必要的发送邮箱的属性进行配置'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', 'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.qq.com', //每种邮箱的host配置不一样 'username' => '11150****1@qq.com', 'password' => '*****',//密码不是指的登录密码 'port' => '465', 'encryption' => 'ssl', ], ],
在控制器或者模型中调用该组件。
$mailer = \Yii::$app->mailer->compose('seekpass',['html'=>'html','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$time."&token=".$token."&adminuser=".$adminuser]); $mailer ->setFrom("1115007981@qq.com")//设置发件人,虽然写了一遍但还是要写 ->setTo("1115007981@qq.com")//设置收件人 ->setSubject("黑势力科技")//摘要 ->send(); //如发送成功,则返回一个bool类型的值
在这里我们需要讲几种方法。
1、mailer组件中的compose()方法
compose($view = null, array $params = [])
$view 值得是需要加载的邮件模板,默认在common/Mailer里(由配置mailer里的viewPath属性决定)
$params 里面可以放置我们需要加载到模板里的各种参数,比如我们上面的‘token’,’adminuser’等参数值。 值得一提的是 当数值的键为html
和text
时分别代表加载我们的html块模板和text块模板。
在view里创建我们的邮件模板
我们打开我们的common/views/mail/layout,我们可以看到mailer组件已经为我们写
好了基础的模板,所以我们只需要写上一些简单的html代码,再去调用layout即可
我们在mail文件夹中写上我们想发送文件的html格式
//例如:<P>尊敬的管理员<?=$adminuser;?></P><p> 你好</p><p>你的重置密码连接为:</p><a href="http://<?=$token?>">http://<?=$token?></a><p>请在5分钟之内重置密码,否则密码想会失效</p> //token 为我们在compose中传入的值
这就是我们发送yii2中发送邮件的功能
首先要实现邮件功能,我们需要了解yii2有邮件类的概念
yii2 为了解决我们邮件发送问题,为我们提供了swiftMailer扩展。
那么什么是swiftMailer呢?
Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。
首先在我们的main.php中配置我们的mailer
组件
//主要是对组件中各种必要的发送邮箱的属性进行配置'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', 'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.qq.com', //每种邮箱的host配置不一样 'username' => '11150****1@qq.com', 'password' => '*****',//密码不是指的登录密码 'port' => '465', 'encryption' => 'ssl', ], ],
在控制器或者模型中调用该组件。
$mailer = \Yii::$app->mailer->compose('seekpass',['html'=>'html','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$time."&token=".$token."&adminuser=".$adminuser]); $mailer ->setFrom("1115007981@qq.com")//设置发件人,虽然写了一遍但还是要写 ->setTo("1115007981@qq.com")//设置收件人 ->setSubject("黑势力科技")//摘要 ->send(); //如发送成功,则返回一个bool类型的值
在这里我们需要讲几种方法。
1、mailer组件中的compose()方法
compose($view = null, array $params = [])
$view 值得是需要加载的邮件模板,默认在common/Mailer里(由配置mailer里的viewPath属性决定)
$params 里面可以放置我们需要加载到模板里的各种参数,比如我们上面的‘token’,’adminuser’等参数值。 值得一提的是 当数值的键为html
和text
时分别代表加载我们的html块模板和text块模板。
在view里创建我们的邮件模板
我们打开我们的common/views/mail/layout,我们可以看到mailer组件已经为我们写
好了基础的模板,所以我们只需要写上一些简单的html代码,再去调用layout即可
我们在mail文件夹中写上我们想发送文件的html格式
//例如:<P>尊敬的管理员<?=$adminuser;?></P><p> 你好</p><p>你的重置密码连接为:</p><a href="http://<?=$token?>">http://<?=$token?></a><p>请在5分钟之内重置密码,否则密码想会失效</p> //token 为我们在compose中传入的值
这就是我们发送yii2中发送邮件的功能
相关推荐:
Yii2 基于邮箱验证的忘记密码操作
yii2 resetful 的授权验证
以上就是yii2 发送邮件功能的详细内容,更多请关注Gxl网其它相关文章!