博客
关于我
[日常] 读取队列并循环发信的脚本
阅读量:651 次
发布时间:2019-03-15

本文共 3886 字,大约阅读时间需要 12 分钟。

1 || $ln=='$-1'){ break; } } if(empty($queue)){ $delSecond++; var_dump($second); sleep(1); //发送完之后删掉邮件文件,延迟几十秒再删 if(is_dir($emlDir) && $delSecond>=50){ rrmdir($emlDir); var_dump($emlDir); } }else{ var_dump($queue); send($queue); $delSecond=0; } $second++;}fclose($socket);die;/** * 取出队列内容后发送邮件 * @param type $row */function send($row){ if(empty($row)) return; global $smtp; list($from,$to,$eml)= explode('|', $row); if(!is_file($eml)){ return; } $to=trim($to); if(empty($to)){ return; } $data=''; //$eml="/tmp/2.eml";var_dump($eml); $file=fopen($eml,"r"); while(!feof($file)){ $line=fgets($file); $tmp=preg_replace("/^To(.*)/i","TO: {$to}", $line); $data.=$tmp; } //var_dump($data);die; //$data=file_get_contents("/tmp/2.eml"); //$tmp=preg_replace("/\nTo[\w\W]*Subject/i","\nTO: {$to}\r\nSubject", $data);var_dump($tmp);die; $res=$smtp->connect("intraxxx",2025); $res.=$smtp->helo($from); $res.=$smtp->auth(); $res.=$smtp->user(); $res.=$smtp->pass("xxx"); $res.=$smtp->mailFrom($from); $res.=$smtp->rcpt($to); $res.=$smtp->data(); $res.=$smtp->send($data); //var_dump(error_get_last()); //echo $res;}/** * 删除邮件文件目录 * @param type $src */function rrmdir($src) { $dir = opendir($src); while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { $full = $src . '/' . $file; if ( is_dir($full) ) { rrmdir($full); } else { unlink($full); } } } closedir($dir); rmdir($src);}class Smtp{ private $socket; private $email; public function __construct(){ ini_set('memory_limit', '1020M'); ini_set("auto_detect_line_endings", true); } public function connect($smtpServer,$smtpPort){ $res=@fsockopen("tcp://".$smtpServer,$smtpPort,$errno, $errstr,30); if(!$res){ throw new Exception($errstr, $errno); } $this->socket=$res; return $this->readLine(); } public function helo($email){ $user="HELO {$email}\r\n"; fwrite($this->socket,$user); $this->email=$email; return $this->readLine(); } public function auth(){ $pass="AUTH LOGIN\r\n"; fwrite($this->socket,$pass); return $this->readLine(); } public function user(){ $pass=base64_encode($this->email)."\r\n"; fwrite($this->socket,$pass); return $this->readLine(); } public function pass($pwd){ $pass=base64_encode($pwd)."\r\n"; fwrite($this->socket,$pass); return $this->readLine(); } public function mailFrom($from){ $data="MAIL FROM:<{$from}>\r\n"; fwrite($this->socket,$data); return $this->readLine(); } public function rcpt($rcpt){ $data="RCPT TO:<{$rcpt}>\r\n"; fwrite($this->socket,$data); return $this->readLine(); } public function data(){ $email="data\r\n"; fwrite($this->socket,$email); return $this->readLine(); } public function send($data){ $email="{$data}\r\n"; $email.=".\r\n"; fwrite($this->socket,$email); return $this->readLine(); } public function read() { $buf=""; while ($ln = $this->readLine()) { if (trim($ln) == '.') { break; } $buf .= $ln; } return $buf; } public function readLine(){ $result=""; while(true){ $buffer=@fgets($this->socket,128); $n = strlen($buffer); $result.=$buffer; if (!$n) { break; } if ($buffer[$n - 1] == "\n") { break; } } return $result; }}

  

转载地址:http://xpnmz.baihongyu.com/

你可能感兴趣的文章
MySQL原理简介—1.SQL的执行流程
查看>>
MySQL参数调优详解
查看>>
mysql参考触发条件_MySQL 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
MySql各种查询
查看>>
mysql同主机下 复制一个数据库所有文件到另一个数据库
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
MySQL命令行登陆,远程登陆MySQL
查看>>
mysql命令:set sql_log_bin=on/off
查看>>
mySQL和Hive的区别
查看>>
MySQL和Java数据类型对应
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>