PHP使用PHPmailer类和smtp发送邮件

    1. 开启邮件smtp服务
    2. 设置授权码
    3. 引入phpmailer类,smtp类
      本地下载
      https://github.com/PHPMailer/PHPMailer
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      //下载PHPMailer并开启php_openssl、php_socket扩展
      include_once 'PHPMailer.php';
      include_once 'SMTP.php';
      $mail = new PHPMailer(); //实例化
      $mail->IsSMTP(); // 启用SMTP
      $mail->Host = "smtp.yeah.net"; //SMTP服务器 以163邮箱为例子
      $mail->Port = 25;  //邮件发送端口
      $mail->SMTPAuth   = true;  //启用SMTP认证
       
      $mail->CharSet  = "UTF-8"; //字符集
      $mail->Encoding = "base64"; //编码方式
       
      $mail->Username = "phpmaster@yeah.net"//你的邮箱
      $mail->Password = "EFWWFULFELKCUMQY"//网易邮箱客户端授权码
       
      $mail->From = "phpmaster@yeah.net"//发件人地址(也就是你的邮箱)
      $mail->FromName = "张某某"//发件人姓名
       
      $address = "137647337@qq.com";//收件人email
      $mail->AddAddress($address, "亲");//添加收件人(地址,昵称)
      //附件
      /*$mail->AddAttachment("logo.jpg");
      $mail->AddAttachment("1.zip");
      $mail->AddAttachment('1.xls','我的附件.xls'); // 添加附件,并指定名称*/
      $mail->IsHTML(true); //支持html格式内容
      //$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片
      $mail->Subject = "你好"; //邮件标题
      $mail->Body    = '这是HTML邮件正文粗体,<a href="http://www.zhangxuhui.com">激活</a>'; //邮件主体内容
       
      //发送
      if(!$mail->Send()) {
          echo "Mailer Error: " . $mail->ErrorInfo;
      } else {
          echo "success";

      场景:邮箱发送验证码类在php7.3+环境中报错:

      filter_var(): explicit use of FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED is deprecated
      原因:查资料得知,php7.3+弃用了FILTER_FLAG_SCHEME_REQUIRED函数

      解决方式:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      PHPMailer.php 3599行
       
              if (filter_var('http://' . $host, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
                  //Is it a syntactically valid hostname?
                  return true;
              }
      更改为:
       
              if (preg_match('/http:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is','http://' . $host)) {
                  //Is it a syntactically valid hostname?
                  return true;
              }

      其实就是url地址地址的正则验证。

posted @   是梦别喊疼想赢别喊停  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示