1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【升级】php socket通过smtp发送邮件(纯文本 HTML 多收件人 多抄送 多密送)

【升级】php socket通过smtp发送邮件(纯文本 HTML 多收件人 多抄送 多密送)

时间:2021-12-06 16:58:23

相关推荐

【升级】php socket通过smtp发送邮件(纯文本 HTML 多收件人 多抄送 多密送)

php教程|PHP源码

【升级】php socket通过smtp发送邮件(纯文本、HTML,多收件人,多抄送,多密送)

php教程-PHP源码

影院自助建站php源码,ubuntu17黑屏,tomcat起另一个闪退,网络爬虫原理流程,php实现斐波那契递归代码,个人seo项目lzw

跳至

源码天堂怎么下载不了,ubuntu上编译onnx,tomcat部署项目的要求,采集抓取爬虫,邮件发送 php,石家庄百度seo优化电话lzw

setServer("XXXXX", "XXXXX@XXXXX", "XXXXX"); 设置smtp服务器* $mail->setFrom("XXXXX"); 设置发件人* $mail->setReceiver("XXXXX"); 设置收件人,多个收件人,调用多次* $mail->setCc("XXXX"); 设置抄送,多个抄送,调用多次* $mail->setBcc("XXXXX"); 设置秘密抄送,多个秘密抄送,调用多次* $mail->setMailInfo("test", "test"); 设置邮件主题、内容* $mail->sendMail(); 发送*/class MySendMail {/*** @var string 邮件传输代理用户名* @access private*/private $_userName;/*** @var string 邮件传输代理密码* @access private*/private $_password;/*** @var string 邮件传输代理服务器地址* @access protected*/protected $_sendServer;/*** @var int 邮件传输代理服务器端口* @access protected*/protected $_port=25;/*** @var string 发件人* @access protected*/protected $_from;/*** @var string 收件人* @access protected*/protected $_to;/*** @var string 抄送* @access protected*/protected $_cc;/*** @var string 秘密抄送* @access protected*/protected $_bcc;/*** @var string 主题* @access protected*/protected $_subject;/*** @var string 邮件正文* @access protected*/protected $_body;/*** @var string 附件* @access protected*/protected $_attachment;/*** @var boolean 是否是纯文本邮件* @access protected*/protected $_isPlain=false;/*** @var reource socket资源* @access protected*/protected $_socket;/*** @var string 错误信息* @access protected*/protected $_errorMessage;/*** 设置邮件传输代理* @access public* @param string $server 代理服务器的ip或者域名* @param string $username 认证账号* @param string $password 认证密码* @param int $port 代理服务器的端口,smtp默认25号端口* @return boolean*/public function setServer($server, $username="", $password="", $port=25) {$this->_sendServer = $server;$this->_port = $port;if(!empty($username)) {$this->_userName = base64_encode($username);}if(!empty($password)) {$this->_password = base64_encode($password);}return true;}/*** 设置发件人* @access public* @param string $from 发件人地址* @return boolean*/public function setFrom($from) {$this->_from = $from;return true;}/*** 设置收件人,多个收件人,连续调用多次.* @access public* @param string $to 收件人地址* @return boolean*/public function setReceiver($to) {if(isset($this->_to)) {if(is_string($this->_to)) {$this->_to = array($this->_to);$this->_to[] = $to;return true;}elseif(is_array($this->_to)) {$this->_to[] = $to;return true;}else {return false;}}else {$this->_to = $to;return true;}}/*** 设置抄送,多个抄送,连续调用多次.* @access public* @param string $cc 抄送地址* @return boolean*/public function setCc($cc) {if(isset($this->_cc)) {if(is_string($this->_cc)) {$this->_cc = array($this->_cc);$this->_cc[] = $cc;return true;}elseif(is_array($this->_cc)) {$this->_cc[] = $cc;return true;}else {return false;}}else {$this->_cc = $cc;return true;}}/*** 设置秘密抄送,多个秘密抄送,连续调用多次* @access public* @param string $bcc 秘密抄送地址* @return boolean*/public function setBcc($bcc) {if(isset($this->_bcc)) {if(is_string($this->_bcc)) {$this->_bcc = array($this->_bcc);$this->_bcc[] = $bcc;return true;}elseif(is_array($this->_bcc)) {$this->_bcc[] = $bcc;return true;}else {return false;}}else {$this->_bcc = $bcc;return true;}}/*** 设置邮件信息* @access public* @param string $body 邮件主题* @param string $subject 邮件主体内容* @param boolean $isPlain 是否是纯文本邮件,默认否* @param string $attachment 附件,文件地址* @return boolean*/public function setMailInfo($subject, $body, $isPlain=false, $attachment="") {$this->_subject = $subject;$this->_body = $body;$this->_isPlain = $isPlain;if(!empty($attachment)) {$this->_attachment = $attachment;}return true;}/*** 发送邮件* @access public* @return boolean*/public function sendMail() {$command = $this->getCommand();$this->socket();//print_r($command);exit;foreach ($command as $value) {if($this->sendCommand($value[0], $value[1])) {continue;}else{return false;}}$this->close(); //其实这里也没必要关闭,smtp命令:QUIT发出之后,服务器就关闭了连接,本地的socket资源会自动释放echo Mail OK!;return true;}/*** 返回错误信息* @return string*/public function error(){if(!isset($this->_errorMessage)) {$this->_errorMessage = "";}return $this->_errorMessage;}/*** 返回mail命令* @access protected* @return array*/protected function getCommand() {$command = array(array("HELO sendmail\r\n", 250),array("AUTH LOGIN\r\n", 334),array($this->_userName . "\r\n", 334),array($this->_password . "\r\n", 235),array("MAIL FROM:_from . ">\r\n", 250));//邮件头$header = "MIME-Version:1.0\r\n";if($this->_isPlain) {$header .= "Content-type:text/plain;charset=utf-8\r\n";}else{$header .= "Content-type:text/html;charset=utf-8\r\n";}//设置发件人$header .= "FROM:test_from . ">\r\n";//设置收件人if(is_array($this->_to)) {$count = count($this->_to);for($i=0; $i<$count; $i++){$command[] = array("RCPT TO:_to[$i] . ">\r\n", 250);$header .= "TO:_to[$i] . ">\r\n";}}else{$command[] = array("RCPT TO:_to . ">\r\n", 250);$header .= "TO:_to . ">\r\n";}//设置抄送if(isset($this->_cc)) {if(is_array($this->_cc)) {$count = count($this->_cc);for($i=0; $i<$count; $i++){$command[] = array("RCPT TO:_cc[$i] . ">\r\n", 250);$header .= "CC:_cc[$i] . ">\r\n";}}else{$command[] = array("RCPT TO:_cc . ">\r\n", 250);$header .= "CC:_cc . ">\r\n";}}//设置秘密抄送if(isset($this->_bcc)) {if(is_array($this->_bcc)) {$count = count($this->_bcc);for($i=0; $i<$count; $i++){$command[] = array("RCPT TO:_bcc[$i] . ">\r\n", 250);$header .= "BCC:_bcc[$i] . ">\r\n";}}else{$command[] = array("RCPT TO:_bcc . ">\r\n", 250);$header .= "BCC:_bcc . ">\r\n";}}$header .= "Subject:" . $this->_subject ."\r\n\r\n";$body= $this->_body . "\r\n.\r\n";$command[] = array("DATA\r\n", 354);$command[] = array($header, "");$command[] = array($body, 250);$command[] = array("QUIT\r\n", 221);return $command;}/*** @access protected* @param string $command 发送到服务器的smtp命令* @param int $code 期望服务器返回的响应吗* @param boolean*/protected function sendCommand($command, $code) {echo Send command: . $command . ,expected code: . $code .

;//发送命令给服务器try{if(socket_write($this->_socket, $command, strlen($command))){//当邮件内容分多次发送时,没有$code,服务器没有返回if(empty($code)) {return true;}//读取服务器返回$data = trim(socket_read($this->_socket, 1024));echo esponse: . $data .

;if($data) {$pattern = "/^".$code."/";if(preg_match($pattern, $data)) {return true;}else{$this->_errorMessage = "Error:" . $data . "|**| command:";return false;}}else{$this->_errorMessage = "Error:" . socket_strerror(socket_last_error());return false;}}else{$this->_errorMessage = "Error:" . socket_strerror(socket_last_error());return false;}}catch(Exception $e) {$this->_errorMessage = "Error:" . $e->getMessage();}}/*** 读取附件文件内容,返回base64编码后的文件内容* @access protected* @return mixed*/protected function readFile() {if(isset($this->_attachment) && file_exists($this->_attachment)) {$file = file_get_contents($this->_attachment);return base64_encode($file);}else {return false;}}/*** 建立到服务器的网络连接* @access private* @return boolean*/private function socket() {if(!function_exists("socket_create")) {$this->_errorMessage = "Extension sockets must be enabled";return false;}//创建socket资源$this->_socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname( cp));if(!$this->_socket) {$this->_errorMessage = socket_strerror(socket_last_error());return false;}socket_set_block($this->_socket);//设置阻塞模式//连接服务器if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {$this->_errorMessage = socket_strerror(socket_last_error());return false;}socket_read($this->_socket, 1024);return true;}/*** 关闭socket* @access private* @return boolean*/private function close() {if(isset($this->_socket) && is_object($this->_socket)) {$this->_socket->close();return true;}$this->_errorMessage = "No resource can to be close";return false;}}/**************************** Test ***********************************/$mail = new MySendMail();$mail->setServer("XXXXX", "XXXXX@XXXXX", "XXXXX");$mail->setFrom("XXXXX");$mail->setReceiver("XXXXX");$mail->setReceiver("XXXXX");//$mail->setCc("XXXXXX");//$mail->setCc("XXXXXX");$mail->setBcc("XXXXX");$mail->setBcc("XXXXX");$mail->setMailInfo("test", "test");$mail->sendMail();

织梦源码搭建网站源码,Ubuntu看电脑电量,tomcat控制台进不去,爬虫 微信消息,PHP手册下载之后怎么查看,淄博前端seolzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。