• PHPMailer + qq邮箱 实现邮件发送


    个人原因,突然想实现定时任务+邮件发送的功能(选择的是PHPMailer + qq邮箱 ),服务器是自己的, centos7+php7

    学习文章:https://www.cnblogs.com/songbo236589/p/8184039.html 

    好了,废话少叙,开始正文

    一、准备工作

      1.安装拓展(sockets + openssl )

      PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密的, PHP 还得包含 openssl 的支持。

      拓展安装的事这里不再多说,请参考我的其他博客。这里注意一点,安装完拓展,更改完php.ini,记得重启php-fpm操作,然后php -m 命令查看拓展是否安装成功

      

      2.qq邮箱开启stmp服务

      设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

    在POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中开启 POP3/SMTP服务 及 IMAP/SMTP服务 两项

    点击下面 生成授权码 获取授权码(中间有手机密保操作) 注意这个授权码是以后用的密码

      3.PHPMailer准备

    phpmailer的安装很简单,我只是放了几个文件进去

    运行的时候报了个错误, PHP 7.2开始不主张使用function __autoload(){}来自动加载类文件,所以我对PHPMailerAutoload.php稍微进行了修改

     1 //旧方法
     2 //function __autoload($classname)
     3 //{
     4 //    PHPMailerAutoload($classname);
     5 //}
     6 
     7 //新方法
     8 function autoload($classname)
     9 {
    10     PHPMailerAutoload($classname);
    11 }
    12 spl_autoload_register('autoload');

    二、邮件程序

     1 require './PHPMailerAutoload.php';
     2 ini_set("memory_limit", "512M");
     3 ini_set("display_errors", "On");
     4 error_reporting(E_ALL);
     5 
     6 $mail = new PHPMailer;
     7 
     8 $mail->Host = "ssl://smtp.qq.com"; //SMTP服务器 qq邮箱例子
     9 
    10 $mail->Port = 465;  //邮件发送端口
    11 $mail->SMTPAuth   = true;  //启用SMTP认证
    12 //$mail->SMTPDebug = true;    //开启debug
    13 
    14 $mail->CharSet  = "UTF-8"; //字符集
    15 
    16 $mail->Username = "***@qq.com";  //你的邮箱
    17 $mail->Password = "fucpwkdufitcgcdb";  //你的密码(授权码)
    18 $mail->Subject = "测试"; //邮件标题
    19 
    20 $mail->From = "***@qq.com";  //发件人地址(也就是你的邮箱)
    21 $mail->FromName = "***";   //发件人姓名
    22 $mail->isHTML(true); //支持html排版
    23 $mail->Subject = 'test'; //标题
    24 $mail->addAddress('***@qq.com'); //收件人地址 可添加多个
    25 $mail->Body = "测试";//内容
    26 $mail->send();
    27 //var_dump($mail);

    三、这里面有几点要注意的地方 

    1.明确ssl

    $mail->Host = "ssl://smtp.qq.com"; (这里的地址要加上ssl://,不然会报错,邮件无法发送)

    2.调试

    $mail->SMTPDebug = true;    //开启debug,方便调试

    我还在底部打印了 $mail对象进行调试(意义不大)

    3.端口

    qq邮箱stmp的端口是 465/587,我用的是465,用之前先 telnet一下,命令 telnet smtp.qq.com 465

    4.授权码变动

    更改QQ密码以及独立密码会触发授权码过期,需要重新获取新的授权码登录

    好了,先写到这里



      

  • 相关阅读:
    王垠:完全用Linux工作
    svn命令在linux下的使用
    svn命令在linux下的使用
    使用stty修改终端设置 stty 用法!
    关于设置SQLPLUS提示符样式的方法----登陆配置文件,动态加载提示符
    ZLIB 库
    Usermod 命令详解 ------工作中修改shell时用 usermod -s /bin/csh home
    linux kill信号列表
    转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221
    [转]Linux进程间通信——使用信号
  • 原文地址:https://www.cnblogs.com/jwcrxs/p/8880416.html
Copyright © 2020-2023  润新知