THINKPHP发送邮件功能梳理

THINKPHP发送邮件功能梳理

最近在做的项目有用到发送邮件的功能,之前用的是THINKPHP的完整包,直接写代码运行一切OK,这两天想着把框架熟悉一下,于是用了THINKPHP的核心包,结果game over,那么我就把过程梳理一下吧,给大家一点借鉴。

  • 一、通过composer加载phpmailer插件包
  • 二、配置config配置文件
  • 三、编写邮件发送函数
  • 四、邮件发送功能完成

一、通过composer加载phpmailer插件包

我在用THINKPHP核心包时就是因为忘记加载phpmailer插件包导致gameover

插件这一块有两种方式,一种是直接下载插件包,然后配置相关文件,一种是通过composer的方式加载插件包。我这里采取的是第二种方法,也就是通过composer的方式加载插件包。

composer require phpmailer/phpmailer

上面这个命令就是我们需要用到的了,在THINKPHP更目录下按住SHIFT+鼠标右键,选中 在此处打开命令窗口。然后在命令窗口中输入上述命令行,等待执行完成即可。

二、配置config配置文件

这里的配置文件是为了灵活切换邮件基本配置,包括发件人邮箱、名称等信息

我们在模块下的config.php文件中配置以下代码:

'THINK_EMAIL' => array(

    'SMTP_HOST' => 'smtp.qq.com', //SMTP服务器

    'SMTP_PORT' => '465', //SMTP服务器端口

    'SMTP_USER' => '4966*****@qq.com', //SMTP服务器用户名

    'SMTP_PASS' => 'abcds*****', //SMTP服务器密码

    'FROM_EMAIL' => '4966*****@qq.com',

    'FROM_NAME' => '', //发件人名称

    'REPLY_EMAIL' => '', //回复EMAIL(留空则为发件人EMAIL)

    'REPLY_NAME' => '', //回复名称(留空则为发件人名称)
    )

三、编写邮件发送函数

之所以把发送邮件又称函数放到common.php中,是为了更好的重复使用

接下来我们再到模块下的common.php文件中编写咱们的发送邮件函数:

function send_mail($tomail, $name, $subject = '', $body = '', $attachment = null) {
            $config = config('THINK_EMAIL');//读取配置文件,config助手函数是thinkphp5的写法,如果是thinkphp3请用C单字母函数
            $mail = new \PHPMailer();           //实例化PHPMailer对象
            $mail->CharSet = 'UTF-8';           //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
            $mail->IsSMTP();                    // 设定使用SMTP服务
            $mail->SMTPDebug = 0;               // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
            $mail->SMTPAuth = true;             // 启用 SMTP 验证功能
            $mail->SMTPSecure = 'ssl';          // 使用安全协议
            $mail->Host = $config['SMTP_HOST']; // SMTP 服务器
            $mail->Port = $config['SMTP_PORT'];                  // SMTP服务器的端口号
            $mail->Username = $config['SMTP_USER'];    // SMTP服务器用户名
            $mail->Password = $config['SMTP_PASS'];     // SMTP服务器密码
            $mail->SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);
            $replyEmail = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];                   //留空则为发件人EMAIL
            $replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];                    //回复名称(留空则为发件人名称)
            $mail->AddReplyTo($replyEmail, $replyName);
            $mail->Subject = $subject;
            $mail->MsgHTML($body);
            $mail->AddAddress($tomail, $name);
            if (is_array($attachment)) { // 添加附件
                foreach ($attachment as $file) {
                    is_file($file) && $mail->AddAttachment($file);
                }
            }
            return $mail->Send() ? true : $mail->ErrorInfo;
    }

四、邮件发送功能完成

走到这一步我们的功能已经完成99%了,接下来在需要使用的地方调用就好了

            $toemail="发件人邮件地址";
            $name="发件人名称";
            $subject='密码找回';
            $content="您好,您本次找回密码的验证码为<font color='red'>".$tmp."</font>";
            send_mail($toemail,$name,$subject,$content);

好了,我们已经完成了邮件发送的所有功能了。让我们把重心放在系统的业务流程上吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值