This is important for send mail

  • PHPMailer 核心文件

    • class.phpmailer.php

    • class.phpmaileroauth.php

    • class.phpmaileroauthgoogle.php

    • class.pop3.php

    • class.smtp.php

    • get_oauth_token.php

    • PHPMailerAutoload.php

  • 在使用PHPMailer之前,首先查看PHP环境扩展中是否开启了socketopenssl扩展,如若没有开启,请在php.ini配置文件中开启两者扩展支持

  • 大多数主流邮箱都支持SMTP协议,除去QQ邮箱,在作为三方代发邮箱时,需要开启SMTP服务支持,并需要授权码登录使用邮箱。对于其他像163、sina等邮箱直接使用代发邮箱账号和密码即可。

    • code of demo

    • <?php
      // 引入PHPMailer核心类文件(SMTP协议方式)
      require_once('class.phpmailer.php');
      require_once('class.smtp.php');$mail = new PHPMailer();// 是否开启debug调试模式,默认为false,非开发环境建议关闭
      $mail->SMTPDebug = 0;// 使用SMTP鉴权方式发送邮件(通用必写方法)
      $mail->isSMTP();// 一旦使用SMTP鉴权方式,必须为True(通用必写方法)
      $mail->SMTPAuth = true;/*** 以下开始分为QQ邮箱和非QQ邮箱方式,以sina邮箱为例* QQ邮箱方式需要使用ssl方式加密登录,登录密码使用所* 给授权码,在邮箱设置中的账号中,开启IMAP/SMTP服务* 并验证密保成功,会给出授权码*/
      // 连接的SMTP服务器主机地址(QQ)
      $mail->HOST = 'smtp.qq.com';
      // 设置使用ssl加密方式登录鉴权(QQ),其他邮箱请注释或者令属性值为空
      $mail->SMTPSecure = 'ssl';
      // 设置ssl连接SMTP服务器远程连接端口号(QQ)
      $mali->Port = '465';
      // 设置发送邮件编码
      $mail->CharSet = 'UTF-8';
      // 设置发送人昵称
      $mail->FromName = '发件人昵称';
      // 设置发件人邮箱账户
      $mail->Usename = '10011@qq.com';
      // QQ邮箱使用获取到的授权码作为账户的登录密码,其他邮箱使用邮箱密码登录即可
      $mail->Password = '***********';
      //发件人邮箱地址,同发件人邮箱
      $mail->From = '10011@qq.com';
      // 设置邮件正文是否为HTML编码
      $mail->isHTML(true);
      // 添加收件人邮箱地址,如若需要群发多人,可多次调用此方法即可
      $mail->addAddress('20011@163.com');
      //$mail->addAddress('30011@sina.com');
      // 设置邮件主题
      $mail->Subject = '邮件主题';
      // 设置邮件正文(可使用定界符来定义大量正文内容)
      $mail->Body = <<< EOR
      <h1>Test mail</h1>
      EOR;
      /* 设置邮件附件,此方法两个参数,分别是附件的位置路径(绝对或者相对路径)以及附件的命名,可  多次调用此方法,添加多个附件 */
      $mail->addAttachment($path,$name);
      //$mail->addAttachment($path,$name);
      // 发送邮件并返回 bool
      $status = $mail->send();
      // 根据返回 bool 值进行判断操作
      if($status){#code ...$mail->smtpClose();
      }else{echo 'Send Mail Error! Error Message is '.$mail->ErrorInfo;
      }

    • 常见的(SMTP、POP3)邮箱服务器以及端口
      <?php
      /*** 此处列举的各大主流或者常见的邮箱服务器如果在连接时出现错误,请注册相应邮箱,在其邮箱* 设置中查看相应邮箱服务器的主机地址以及端口*/
      sina.com
      POP3服务器地址:pop3.sina.com.cn(端口:110)
      SMTP服务器地址:smtp.sina.com.cn(端口:25) sina.cn
      POP3服务器地址:pop3.sina.com(端口:110)      ------- > pop.sina.com
      SMTP服务器地址:smtp.sina.com(端口:25)sinaVIP
      POP3服务器:pop3.vip.sina.com (端口:110)
      SMTP服务器:smtp.vip.sina.com (端口:25)sohu.com
      POP3服务器地址:pop3.sohu.com(端口:110)
      SMTP服务器地址:smtp.sohu.com(端口:25)126邮箱POP3服务器地址:pop.126.com(端口:110)SMTP服务器地址:smtp.126.com(端口:25)139邮箱POP3服务器地址:POP.139.com(端口:110)SMTP服务器地址:SMTP.139.com(端口:25)163.comPOP3服务器地址:pop.163.com(端口:110)SMTP服务器地址:smtp.163.com(端口:25)QQ邮箱POP3服务器地址:pop.qq.com(端口:110)SMTP服务器地址:smtp.qq.com(端口:ssl/465|Tls/587)QQ企业邮箱POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995)SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:ssl/465|Tls/587)yahoo.comPOP3服务器地址:pop.mail.yahoo.comSMTP服务器地址:smtp.mail.yahoo.comyahoo.com.cnPOP3服务器地址:pop.mail.yahoo.com.cn(端口:995)SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587HotMailPOP3服务器地址:pop3.live.com(端口:995)SMTP服务器地址:smtp.live.com(端口:587)gmail(google.com)POP3服务器地址:pop.gmail.com(SSL启用端口:995)SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)263.netPOP3服务器地址:pop3.263.net(端口:110)SMTP服务器地址:smtp.263.net(端口:25)263.net.cnPOP3服务器地址:pop.263.net.cn(端口:110)SMTP服务器地址:smtp.263.net.cn(端口:25)x263.netPOP3服务器地址:pop.x263.net(端口:110)SMTP服务器地址:smtp.x263.net(端口:25)21cn.comPOP3服务器地址:pop.21cn.com(端口:110)SMTP服务器地址:smtp.21cn.com(端口:25)FoxmailPOP3服务器地址:POP.foxmail.com(端口:110)SMTP服务器地址:SMTP.foxmail.com(端口:25)china.comPOP3服务器地址:pop.china.com(端口:110)SMTP服务器地址:smtp.china.com(端口:25)tom.comPOP3服务器地址:pop.tom.com(端口:110)SMTP服务器地址:smtp.tom.com(端口:25)etang.comPOP3服务器地址:pop.etang.com(端口:110)SMTP服务器地址:smtp.etang.com(端口:25)    

    • 关于表单多文件上传并发送邮箱 demo

    • <html><head><title></title></head><body><form method="POST" enctype="multipart/form-data" action="form_test.php"><input type="file" name="upload[]" multiple="multiple" /><button type="submit">提交</button></form></body>
      </html>

    • 多文件选择上传,表单提交 $_FILES 数据形式打印,如图
    • form_test.php
    • <?php
      header("content-type:text/html;charset=utf-8");
      if($_FILES['upload']['error'][0] == 4){echo("<script type='text/javascript'> alert('请上传文件'); window.history.back();</script>");exit;
      }else{// 设置文件保存目录$uploaddir = "../upload/file/"; require_once 'upload_img.php';$FJ = array();for($i=0; $i<count($_FILES['upload']['name']); $i++) {if(file_exists($_FILES['upload']['tmp_name'][$i]) && is_uploaded_file($_FILES['upload']['tmp_name'][$i])) {//判断文件类型if(!in_array(strtolower(fileext($_FILES['upload']['name'][$i])),$type)) { $text=implode(",",$type); $page_result=$text;echo("<script type='text/javascript'> alert('请上传格式为 ".$page_result." 的图片'); window.history.back();</script>");exit;}else{//生成目标文件的文件名 $filename=explode(".",$_FILES['upload']['name'][$i]);do { $filename[0]=random(10);$name=implode(".",$filename); $uploadfile=$uploaddir.$name; } while(file_exists($uploadfile)); if (move_uploaded_file($_FILES['upload']['tmp_name'][$i],$uploadfile)) {   $FJ[] = $uploadfile;}}}else{echo("<script type='text/javascript'> alert('上传失败,请重试'); window.history.back();</script>");exit;} }
      }// 发送邮件(QQ)
      require_once("class.phpmailer.php");
      require_once("class.smtp.php");$mail = new PHPMailer();
      $mail->SMTPDebug = 0;
      $mail->isSMTP();
      $mail->SMTPAuth = true;
      $mail->SMTPSecure = 'ssl';
      $mail->Host = 'smtp.qq.com';
      $mail->Port = '465';
      $mail->CharSet = 'UTF-8';
      $mail->FromName = 'Form Data';
      $mail->Username = '发送人邮箱账户';
      $mail->Password = '发件人账户授权码';
      $mail->From = '发件人邮箱账户';
      $mail->isHTML(true);
      $mail->addAddress('收件人邮箱');
      $mail->Subject = 'mail title';
      $mail->Body = '<h1>Form Data<h1>';// 根据当前脚本文件位置获取所需目录绝对地址
      $Active_path = dirname(dirname(__FILE__));// 循环拼接附件绝对路径并调用附件添加方法加入邮件附件中
      for ($i=0; $i < count($FJ) ; $i++) { if(file_exists($FJ[$i])){$FJ[$i] = $Active_path.'/'.str_replace('../', '', $FJ[$i]);$mail->addAttachment($FJ[$i]);}else{continue;}
      }$status = $mail->send();
      if($status){// 发送成功,根据需要是否将上传附件文件删除,上传失败亦然for ($i=0; $i < count($FJ) ; $i++) { if(file_exists($FJ[$i])){unlink($FJ[$i]);}    }echo("<script type='text/javascript'> alert('send mail success!'); window.history.back();</script>");exit;
      }else{for ($i=0; $i < count($FJ) ; $i++) { if(file_exists($FJ[$i])){unlink($FJ[$i]);}}echo("<script type='text/javascript'> alert('send mail fail,please try again!Error message: '".$mail->ErrorInfo."'); window.history.back();</script>");exit;
      }

    • upload_img.php
    • <?php
      //设置允许上传文件的类型
      $type=array("jpg","gif","bmp","jpeg","png"); //获取文件后缀名函数
      function fileext($filename)
      { return substr(strrchr($filename, '.'), 1);
      } //生成随机文件名函数
      function random($length)
      { $hash = 'SC-'; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash;
      } // 获取不同比例的缩略图
      function ResizeImage($uploadfile,$maxwidth,$maxheight,$name)
      {//取得当前图片大小$width = imagesx($uploadfile);$height = imagesy($uploadfile);$i=0.5;//生成缩略图的大小if(($width > $maxwidth) || ($height > $maxheight)){/*$widthratio = $maxwidth/$width;$heightratio = $maxheight/$height;if($widthratio < $heightratio){$ratio = $widthratio;}else{$ratio = $heightratio;}$newwidth = $width * $ratio;$newheight = $height * $ratio;*/$newwidth = $width * $i;$newheight = $height * $i;if(function_exists("imagecopyresampled")){$uploaddir_resize = imagecreatetruecolor($newwidth, $newheight);imagecopyresampled($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);}else{$uploaddir_resize = imagecreate($newwidth, $newheight);imagecopyresized($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);}ImageJpeg ($uploaddir_resize,$name);ImageDestroy ($uploaddir_resize);}else{ImageJpeg ($uploadfile,$name);}
      }// 此处注释内容为图片文件的比例缩放
      // if($_FILES["filename"]['size'])
      // {
      //     if($file_type == "image/pjpeg"||$file_type == "image/jpg"|$file_type == "image/jpeg")
      //     {
      //         //$im = imagecreatefromjpeg($_FILES[$upload_input_name]['tmp_name']);
      //         $im = imagecreatefromjpeg($uploadfile);
      //     }
      //     elseif($file_type == "image/x-png")
      //     {
      //         //$im = imagecreatefrompng($_FILES[$upload_input_name]['tmp_name']);
      //         $im = imagecreatefromjpeg($uploadfile);
      //     }
      //     elseif($file_type == "image/gif")
      //     {
      //         //$im = imagecreatefromgif($_FILES[$upload_input_name]['tmp_name']);
      //         $im = imagecreatefromjpeg($uploadfile);
      //     }
      //     else//默认jpg
      //     {
      //         $im = imagecreatefromjpeg($uploadfile);
      //     }
      //     if($im)
      //     {
      //         ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize);//         ImageDestroy ($im);
      //     }
      // } 

转载于:https://www.cnblogs.com/liwei-17/p/8988232.html

关于 PHPMailer 邮件发送类的使用心得(含多文件上传)相关推荐

  1. 好用的 php类,一个好用的php文件上传处理类

    完整代码如下. 复制代码 代码如下: //------------------------------------- // 文件说明:文件上传处理类 // 文件作者:Jesse Lee //----- ...

  2. Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传

    JSON JSON指的是JavaScript对象方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON具有自我i描述,更易理解 ...

  3. 邮件发送类,支持HTML格式,支持优先级设置

    www.chinacs.net  2002-5-9  中文C#技术站 邮件发送类,支持HTML格式,支持优先级设置.通过SOCKET类实现的 using System; using System.Te ...

  4. 邮件发送类,支持Gmail

    邮件发送类,支持Gmail,使用简单方便 using System; using System.Collections.Generic; using System.Text; using System ...

  5. NET开发邮件发送功能的全面教程(含邮件组件源码)(

    天,给大家分享的是如何在.NET平台中开发"邮件发送"功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下. AD:2013云计算架构师峰会精彩课程曝光 ...

  6. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发"邮件发送"功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2 ...

  7. [转].NET开发邮件发送功能的全面教程(含邮件组件源码)

    转载自http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html 今天,给大家分享的是如何在.NET平台中开发"邮件发送 ...

  8. 77.【JavaWeb文件上传和邮件发送04】

    JavaWeb (二十五).文件上传 1.准备工作 2.实用类介绍 3.思维导图: 4.正戏开始 5.完整代码 (二十六).邮箱发送 1.邮箱发送的原理: 2.服务器的原理 3.下载两个jar包 4. ...

  9. 【狂神说】JavaWeb笔记整理 | SMBMS项目 | 文件上传和邮件发送

    目录 JavaWeb 1.基本概念 1.1 概念 1.2 web应用程序: 1.3 静态web 1.4 动态web 2.web服务器 2.1 技术讲解 2.2 web 服务器 3. Tomcat 3. ...

最新文章

  1. 超图iClient 3D 入门程序 - 1
  2. vue项目部署到nginx
  3. 微擎任意消息该公众号提供的服务器,该公众号提供的服务出现故障,请稍后再试...
  4. LeetCode 1110. 删点成林(二叉树递归)
  5. 计算机计划300字作文,我的计划作文300字
  6. 原始图片中的ROI如何映射到到feature map?(转)
  7. Java 字符串(一条日志信息)解析实例
  8. 两种方法--完全卸载macOS上的应用程序
  9. easyui datagrid一般创建模板
  10. 用C语言打印1到100的罗马数字
  11. 质因数分解的一些讨论(Pollard-Rho算法)
  12. [maven] Maven面试宝典
  13. IEEE调研报告:父母关于人工智能对儿童的影响的看法
  14. 吉林大学计算机科学与技术专业(研)解读
  15. csv逗号分隔符转换_pythonpandas读写csv数据
  16. AE效果:模糊和锐化
  17. MySQL——数据库基本操作(教程)
  18. ARM CPU性能优化:FP32 、FP16 和BF16区别
  19. 【性能监控】TTI (Time to interactive)
  20. ds12c887程序C语言,单片机+TM1628+DS12C887时钟源程序

热门文章

  1. ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64的解决办法及原因
  2. 默认字间距html,HTML连载42-清空默认边距、文字行高,字间距分享
  3. Unity 全景漫游过程中使用AWSD控制镜头移动,EQ控制镜头升降,鼠标右键控制镜头旋转。
  4. 将一个rar转换成jpg图片方法
  5. 如果x≥0,则,否则。编写程序,输入一个整数x,计算后输出对应的y值。
  6. 13.3寸_Wifi标签功耗电流计算-单面屏幕-1.8V的Flash测试
  7. gitlab使用说明
  8. 2021-10-14每日一练
  9. tf.nn.top_k()用法
  10. 第一次实习月记及体会