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 }

  

 

posted @ 2018-04-23 09:20  Elephanyu  阅读(2190)  评论(0编辑  收藏  举报