一、强悍的扩展—— yii2-swiftmailer:
原理: Yii2.0中集成了邮件的发送类,包括基础的操作的封装,这也是框架的强大之处:类似的还有国际化的多语言配置,等等可以去探索,
操作:主要是体现在配置方面:
-
开启邮箱的SMTP服务,那么SMTP是什么呢?
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。参照*;
由此我们总结下它的特点:
- 类型:基于文本的协议
- 作用:用来通过邮件的方式传输文本内容,通过搭建SMTP服务器
- 端口(port):25
- 范围:一对一、或者一对多,在理论上都是可行的;
局限性:
- 安全问题和垃圾邮件的产生
问题是没有用户的验证,后面添加了auth扩展
而在这里就是借助于已经搭建好的邮件服务器,免费收发邮件;包括国内的qq、网易163等等邮箱服务器都支持SMTP,但是要通过登录开启(下面讲解我们以163邮箱为例)
2. 组件注册方式配置:
其中yii2.0的basic的Config\web.php中进行配置
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
//改为false,默认只有以上两个
'viewPath'=>'@common/mail'
//可选,视图展式
'transport'=>[
'class'=>'Swift_SmtpTransport',
'host'=>'smtp.163.com',
'username'=>'用户名@163.com',
'password'=>'此处填写授权码',
'port'=>'25',
'encryption'=>'tls',
],
],
3.控制器中调用:
public function actionMail(){
$mail = Yii::$app->mailer->compose()
->setFrom('m13993334619@163.com')
// 配置的用户
->setTo('1791502202@qq.com')
// 发送的用户
->setSubject('邮件配置')
->setTextBody('这是发送的邮件,请按链接完成注册')
->setHtmlBody('<span>发送成功,请返回</span>')
->send();
if($mail)
return '发送成功';
else
return '发送失败';
}
ok,至此邮件已经可以正常发送了。
二、其他拓展
1. 关于邮件的服务
-
POP3
邮局协议(Post Office Protocol,简称POP)是TCP/IP协议族中的一员,由RFC 1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。最新版本为POP3,全名“Post Office Protocol - Version 3”,而提供了SSL加密的POP3协议被称为POP3S。* ;
处理的问题是:支持邮件的客户端处理,处理离线的邮件(因为发送邮件的时候收信人多半不在,接收问题)
-
IMAP
Internet Message Access Protocol(缩写为IMAP,以前称作交互邮件访问协议)是一个应用层协议,用来从本地邮件客户端(如Microsoft Outlook、Outlook Express、Foxmail、Mozilla Thunderbird)访问远程服务器上的邮件。*
处理的问题是:支持邮件的操作,例如标记、移动等等,会反馈到服务端;
三、区别与联系
- SMTP和POP3
答:
区别:SMTP是发送邮件的协议,POP3是接收离线邮件的协议
联系:同属于TCP/IP 协议一族。
会意:一个发信,一个收信; - POP3和IMAP
答:
区别:POP3只是被动接受邮件,并不能和服务器产生交互;IMAP支持操作邮件,并且会返回到服务器;
联系:都是接收邮件;同属于TCP/IP协议一族;