文章目录
在我们很多的程序中都需要发送邮件去提示用户一些相关信息,应用的范围还是很广的,比如:登录验证需要验证码,后台管理系统中有变更需要发送邮箱提示等,而且邮件的发送相较于短信发送成本更低,是
免费的!!
那么要实现邮件发送需要做以下操作:
首先我们需要设置我们的邮箱客户端授权,获取到授权码
找到我们的邮箱设置
我这边使用的是QQ邮箱,每个邮箱基本都差不多
去账号中找到这一堆服务,找到后开启smtp服务
开启服务后管理服务
在这里点击就可以获取到授权码啦
接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)
直接使用composer安装扩展phpmailer
composer require phpmailer/phpmailer
在thinkPHP中封装一下邮件服务类
我把它封装在了application目录下的common.php公共类中,下面是代码:
// 应用公共文件namespaceapp;classCommon{// 应用公共文件/**
* 邮件发送
* @param email 邮箱号,发送给谁
* @param code 邮件内容
*/publicfunctionsend_code_to_email($email,$code){Vendor('PHPMailer.PHPMailerAutoload');//这里引入一下刚才安装扩展的自动加载类$mail=new\PHPMailer();// 实例化类,新建$mail->isSMTP();// 开启SMTP$mail->CharSet='utf8';// 设置编码$mail->Host='smtp.qq.com';// SMTP服务器$mail->SMTPAuth=true;// smtp需要鉴权 这个必须是true$mail->Username='';// 发信人的账号,这个需要是开启stmp服务的邮箱号$mail->Password="";// 密码,非邮箱密码,是SMTP生成的密码,也就是授权码$mail->From='';// 发信人的地址$mail->SMTPSecure='ssl';// 采用ssl协议,这里采用了加密,端口需要进行开放:465或587$mail->Port=465;// 端口号$mail->FromName="";// 发件人昵称$mail->addAddress($email);// 收信人地址$mail->addReplyTo($email);//回复的时候回复的邮箱,建议和发信人一样$mail->Subject="";// 邮件主题,看自己需求$mail->Body=$code;// 邮件内容if(!$mail->send()){returnjson([400,$mail->ErrorInfo]);}else{returnjson([200,'验证码已经发送成功']);}}}
我这边是只封装了收件人和邮件内容,看具体业务需求,可以将主题,发件人昵称也封装一下
实际调用
在需要调用的地方进行调用就可以了,当然要先将公共类引入
在需要调用的控制器文件中的命名空间下使用use引入
useapp\Common;
调用函数
/**
* 电子邮件
* @param string $email邮箱号
* @param string $code邮件内容
* 具体到common应用公共函数文件内找senf_code_to_email方法
*/publicfunctionsends(){$email=input('email');//获取到收件人$code=input('code');//获取到邮件内容$send=newCommon();//实例化公共类return$send->send_code_to_email($email,$code);//调用封装好的方法}
效果
我这边直接用网页url调用了一下
收到邮件:
总结
总体其实还是比较简单的,需要注意如果不使用ssl安全协议的话端口是25,不过阿里云是强制ssl安全的,所以最好还是使用465端口比较好
到邮箱中授权开启获取授权码->在thinkPHP框架中使用composer安装PHPMailer扩展->封装一下发送邮件方法->在业务中调用即可
希望对大家有所帮助,如果觉得有用的话还请不吝三连
版权归原作者 不掉头发! 所有, 如有侵权,请联系我们删除。