英特网校

php实现邮箱发送功能tp5框架

网站开发中经常用到邮件发送功能,比如发送验证码、修改密码或者推送最新消息等等,由于他是免费使用的功能,所以在网站中经常遇到。这结课我们就给大家介绍下TP5如何发送邮件。

邮件可以利用phpsmtp类来发邮件,大家可以尝试下,但是在tp5中建议大家用phpmailer来实现邮件发送。实现方式如下:

1、  下载phpmailer

Tp5可以利用composer下载或者直接下载安装包,这里直接将安装包给大家!

下载地址:https://pan.baidu.com/s/1HPUJFTyPlg4a7TK7YWySOg

2、  phpmailer解压好后直接放到extend

3、  application中新建一个公用的控制器,然后创建一个sendmail类文件:代码如下

<?php
namespace app\index\controller;
use
think\Controller;
use
think\Exception;
use
think\Loader;
class
SendEmail extends Controller
{

   
/**
     *
发送邮件
    
* @param $host [SMTP地址]
     * @param $send_email [
发送邮箱账号]
     * @param $pwd [
发送邮箱密码]
     * @param $to [
接收邮箱账号]
     * @param $title [
邮件标题]
     * @param $content [
邮件内容]
     * @param $file [
邮件附件]
     * @return bool
     * @throws \Exception
     */
   
public function sendMail( $to, $title, $content){
       
//实例化PHPMailer核心类
   
Loader::import('PHPMailer.src.PHPMailer',EXTEND_PATH,'.php');
       
Loader::import('PHPMailer.src.SMTP',EXTEND_PATH,'.php');
       
$mail = new \PHPMailer();
       
//是否启用smtpdebug进行调试 开发环境建议开启默认为关闭
       
$mail->SMTPDebug = 2;
       
//使用smtp鉴权方式发送邮件
       
$mail->isSMTP();
       
//smtp需要鉴权 这个必须是true
       
$mail->SMTPAuth=true;
       
//SMTP地址
       
$mail->Host = 'smtp.163.com';
       
//设置使用ssl加密方式登录鉴权
       
$mail->SMTPSecure = 'ssl';
       
//设置ssl连接smtp服务器的远程服务器端口号
       
$mail->Port = 465;
      
 // $mail->Helo = 'Hello smtp.qq.com Server';
        //
发件人的主机域默认为localhost 内容任意,建议使用您的域名
       
//$mail->Hostname = 'localhost';
        //
设置发送的邮件的编码
       
$mail->CharSet = 'UTF-8';
       
//设置发件人姓名 任意内容
       
$mail->FromName = '英特网络';
       
//smtp登录的账号 这里填入字符串格式邮箱账号的即可
       
$mail->Username = "intewl@163.com";
       
//smtp登录的密码 (部分邮箱为授权码)
       
$mail->Password = "";
       
//设置发件人邮箱地址
       
$mail->From = "intewl@163.com";
       
//邮件正文是否为html编码
       
$mail->isHTML(true);
       
//收件人邮箱地址 参数一为邮箱地址 参数二为给该地址设置的昵称
       
$mail->addAddress($to,'英特网络');//重复调用可添加多个收件人
       
//邮件标题
       
$mail->Subject = $title;
       
//邮件正文 若isHTML设置为true,则可是完整的html字符串 (可用file_get_contents函数读取本地的html文件)
       
$mail->Body = $content;
       
//添加附件 参数一为附件存放的目录 参数二为在邮件附件名称
       
try{
           
//发送邮件
           
$status = $mail->send();
       
}
       
catch (Exception $e){
           
echo $e->getMessage();
       
}
       
//返回结果
       
return $status?true:false;
   
}
    }

在其他需要用到发送邮件的地方使用,使用方法先创建类,然后调用sendMail函数

public function sendMail(){
    $mail=new SendEmail();
    $res=$mail->sendMail( 'zykczm@qq.com', "
英特网络", "您的验证码是");
    dump($res);
}


注意事项:

1、邮件发送功能首先需要发送邮箱的账号开通pop3/smtp或者imap/smtp功能。

2、sendMail中邮箱账号密码等可以自行提取到函数参数中,以便后台对参数进行管理

3、最后使用sendMail函数是,$title$content的内容用较真实内容替换,在测试中,将$title写成‘111’,$content写成‘1111’,会出现554错误,发生原因内容太简单有些邮箱判断是垃圾内容。

4、Smtp服务器远程端口号不同邮箱不同端口,可以百度搜下

 


评论中心

登录后可评论,请 登录 注册