Thinkphp 5.1 配合PHPMailer 实现邮件发送功能

Thinkphp 5.1发送邮件


发送邮件前首先配置qq邮箱

    登录qq邮箱  点击<设置>-><账户>

1: 找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开启前两个服务

这里只需开启前两个服务即可, 开启时需要短信验证

注意: 开启服务时会生成授权码,注意保存


2:接下来找到自己服务的phpinfo,查看发送邮件所需要的扩展功能是否开启


需要openssl扩展
需要sockets扩展

如未在phpinfo中找到这两个扩展,按以下步骤开启即可

(1): 找到php.ini文件

去除掉前面的分号

(2): 重启服务

3: 下载PHPMailer文件,放到thinkphp下的extend目录下

下载链接:GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP


抽出这三个文件

测试代码:

HTML

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8">

    <title>Title

        .form-wrapper {

display:flex;

            justify-content:center;

            flex-direction:column;

            align-items:center;

            margin-top:200px;

        }

.form-item {

min-height:50px;

        }

.form-item input[type=text] {

min-width:220px;

            height:20px;

        }

<form action="{:url('index/index/sendEmail')}" method="post" >

    <div class="form-wrapper">

        <div class="form-item">

            邮箱:<input  type="text" id="mail" name="to"/>

        <div class="form-item">

            标题:<input  type="text" id="title" name="title"/>

        <div class="form-item">

            内容:<input  type="text" id="content" name="content"/>

        <div class="form-item">

            <input class="button" type="submit" value="发送" />

</html>

PHP

namespace app\index\controller;

use PHPMailer\PHPMailer;

use think\Db;

use think\Request;

class Index

{

    public function index()

{

        return view();

    }

    public function sendEmail(Request $request)

{

        $postData = $request->post();

        $result = $this->sendMail($postData['to'],$postData['title'],$postData['content']);

        return $result ? '发送成功' : '发送失败';

    }

    /**

* 发送邮件方法

    * @param $to:接收者 $title:标题 $content:邮件内容

    * @return bool true:发送成功 false:发送失败

*/

    public function sendMail($to,$title,$content){

        //实例化PHPMailer核心类

        $mail = new PHPMailer();

        //使用smtp鉴权方式发送邮件

        $mail->isSMTP();

        //smtp需要鉴权 这个必须是true

        $mail->SMTPAuth=true;

        //链接qq域名邮箱的服务器地址

        $mail->Host = 'smtp.qq.com';

        //设置使用ssl加密方式登录鉴权

        $mail->SMTPSecure = 'ssl';

        //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587

        $mail->Port = 465;

        //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名

        $mail->Hostname = '';

        //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码

        $mail->CharSet = 'UTF-8';

        //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名

        $mail->FromName = '发件人姓名';

        //smtp登录的账号 这里填入字符串格式的qq号即可

        $mail->Username ='你的qq邮箱地址';

        //smtp登录的密码 使用生成的授权码(就刚才保存的最新的授权码)

        $mail->Password = '保存开始smtp服务时生成的授权码';

        //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”

        $mail->From = '你的邮箱地址';

        //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false

        $mail->isHTML(true);

        //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大

        $mail->addAddress($to,$to.'尊敬的您');

        //添加多个收件人 则多次调用方法即可

// $mail->addAddress('xxx@163.com','尊敬的客户');

//添加该邮件的主题

        $mail->Subject = $title;

        //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串

        $mail->Body = $content;

        $status = $mail->send();

        //判断与提示信息

        if($status) {

            return true;

        }else{

            return false;

        }

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352