• phpmailer 发送图片


     

    php对邮箱地址进行检测

     1 function PageIsMail(array $email_arr){
     2     foreach($email_arr as $email) {
     3         //邮箱正则匹配(不能以-_.开头)
     4         if (!preg_match("/^[0-9A-Za-z][0-9A-Za-z-_.]*@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/i", $email)){
     5             echo "(method1)invalid email: $email<br />";
     6             continue;
     7         }
     8         //名称在4到16位之间
     9         if (strlen(explode("@",$email)[0])<4 or strlen(explode("@",$email)[0])>16 ){
    10             echo "(method2)invalid email: $email<br />";
    11             continue;
    12         }
    13         //域名是否存在(依赖网络,不建议使用)
    14         if(checkdnsrr(explode("@",$email)[1],"MX") === false) {
    15             echo "(methodof3)invalid email: $email<br />";
    16             continue;
    17         }
    18         echo "email: $email<br />";
    19     }
    20 }

    phpmailer 发送带图片的邮件

    原理:

      1、将html中的图片文件(本地直接添加,网络图片则需要下载)加载为邮件附件$mail->addEmbeddedImage(pic_path, 附件id)

      2、将html中的图片代码替换成<img src="cid:添加附件时的id" />

    直接上代码

     1 // 发送邮件
     2 function SendMail(){
     3     require_once("./class.phpmailer.php");
     4     $mail = new PHPMailer();
     5     //$mail->SMTPDebug = 3;
     6     $this->mail=$mail;
     7     $this->mail->isSMTP();
     8     $this->mail->CharSet = 'UTF-8';
     9     $this->mail->Host = 'smtp.exmail.qq.com';
    10     $this->mail->SMTPAuth = true;
    11     $mail->Username = 'xxx@xx.com';
    12     $mail->Password = 'pwd';
    13     $this->mail->SMTPSecure = 'ssl';
    14     $this->mail->Port = 465;
    15     $this->mail->From = 'xxx@xx.com';
    16     $this->mail->addAddress('yyy@yy.com','toName');
    17     $this->mail->isHTML(true);
    18     $this->mail->Subject = '中文主题测试';
    19     $hmtl = '<i>帅哥</i>:<b>你好</b>!!!<br><img src="./static/pic/xx.png" /><br><img src="./static/pic/xx.png" />';
    20     //带图处理,不带图不处理,图片格式如上(图片未加格式)
    21     $this->mail->Body = ProcessImg($hmtl);
    22     $this->mail->AltBody = strip_tags($hmtl);
    23     if(!$this->mail->send()) {
    24         echo 'Message could not be sent.';
    25         echo 'Mailer Error: ' . $this->mail->ErrorInfo;
    26     } else {
    27         echo 'Message has been sent';
    28     }
    29 }
    30 
    31 // 处理MailBody中的图片,将本地图片加入附件方可发送成功
    32 function ProcessImg($html){
    33     $resutl = preg_match_all('@<img src=.+? />@', $html, $matches);
    34     if(!$resutl) return $html;
    35     $trans = array();
    36     foreach ($matches[0] as $key => $img) {
    37         $id = 'img' . $key;
    38         preg_match('/src="(.*?)"/', $html, $path);
    39         if ($path[1]){
    40             $this->mail->addEmbeddedImage($path[1], $id);
    41             $trans[$img] = '<img src="cid:' . $id . '" />';
    42         }
    43     }
    44     $html = strtr($html, $trans);
    45     return $html;
    46 }

      

  • 相关阅读:
    Delphi DbgridEh实现鼠标拖动选中列,并使复选框选中
    什么是运行期包与设计期包
    组件事件大全
    sql: 查找约束
    delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件
    delphi7 编译的程序在win7下请求获得管理员权限的方法
    DELPHI中build和compile有什么区别?
    线程安全的单件模式(单例模式)
    [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作
    两种读写配置文件的方案(app.config与web.config通用)
  • 原文地址:https://www.cnblogs.com/elephanyu/p/8908755.html
Copyright © 2020-2023  润新知