失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php socket通过SMTP发送邮件

php socket通过SMTP发送邮件

时间:2019-11-26 04:49:15

相关推荐

php socket通过SMTP发送邮件

php教程|php手册

php,socket,SMTP,发送,邮件,phpso

php教程-php手册

斗地主 小游戏 源码,安装ubuntu时屏幕,免费的爬虫脚本,opcodes php,seo加盟方案lzw

phpsocket用过SMTP发送邮件。 用的是php的php-sockets扩展,可以发送纯文本和html格式的邮件。 欢迎提出意见! PHP 源码与演示: 源码出处演示出处 ?php/*** 邮件发送类* 支持发送纯文本邮件和HTML格式的邮件* @example* $config = array(*”from” = “*****”,*

聚合VIP千月影视源码影视双端,ubuntu粘贴不能用,爬虫的经济分析,php dir类, 淘宝seolzw

装饰公司erp 源码,ubuntu如何连网,tomcat一闪而过打不开,爬虫视频播放量,php制作中小型网站的优势,趣头条seolzw

php socket用过SMTP发送邮件。

用的是php的php-sockets扩展,可以发送纯文本和html格式的邮件。

欢迎提出意见!

PHP

源码与演示:源码出处演示出处

.CodeEntity .code_pieces ul.piece_anchor{width:25px;position:absolute;top:25px;left:-30px;z-index:1000;}.CodeEntity .code_pieces ul.piece_anchor li{width:25px;background: #efe;margin-bottom:2px;}.CodeEntity .code_pieces ul.piece_anchor li{border-left:3px #40AA63 solid;border-right:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li:hover{border-right:3px #40AA63 solid;border-left:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li a{color: #333;padding: 3px 10px;}.CodeEntity .code_pieces .jump_to_code{visibility:hidden;position:relative;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code{visibility:visible;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code a{text-decoration:none;}.CodeEntity .code_pieces h2 i{float:right;font-style:normal;font-weight:normal;}.CodeEntity .code_pieces h2 i a{font-size:9pt;background: #FFFFFF;color:#00A;padding: 2px 5px;text-decoration:none;}

"*****",*"to" => "***",*"subject" => "test",*"body" => "test",*"username" => "***",*"password" => "****",*"isHTML" => true*);** $mail = new MySendMail();** $mail->setServer("");** $mail->setMailInfo($config);* if(!$mail->sendMail()) {*echo $mail->error();*return 1;* }*/class MySendMail {/*** @var 邮件传输代理用户名* @access private*/private $_userName;/*** @var 邮件传输代理密码* @access private*/private $_password;/*** @var 邮件传输代理服务器地址* @access protected*/protected $_sendServer;/*** @var 邮件传输代理服务器端口* @access protected*/protected $_port=25;/*** @var 发件人* @access protected*/protected $_from;/*** @var 收件人* @access protected*/protected $_to;/*** @var 主题* @access protected*/protected $_subject;/*** @var 邮件正文* @access protected*/protected $_body;/*** @var 是否是HTML格式的邮件* @access protected*/protected $_isHTML=false;/*** @var socket资源* @access protected*/protected $_socket;/*** @var 错误信息* @access protected*/protected $_errorMessage;public function __construct($from="", $to="", $subject="", $body="", $server="", $username="", $password="",$isHTML="", $port="") {if(!empty($from)){$this->_from = $from;}if(!empty($to)){$this->_to = $to;}if(!empty($subject)){$this->_subject = $subject;}if(!empty($body)){$this->_body = $body;}if(!empty($isHTML)){$this->_isHTML = $isHTML;}if(!empty($server)){$this->_sendServer = $server;}if(!empty($port)){$this->_port = $port;}if(!empty($username)){$this->_userName = $username;}if(!empty($password)){$this->_password = $password;}}/*** 设置邮件传输代理* @param string $server 代理服务器的ip或者域名* @param int $port 代理服务器的端口,smtp默认25号端口* @param int $localPort 本地端口* @return boolean*/public function setServer($server, $port=25) {if(!isset($server) || empty($server) || !is_string($server)) {$this->_errorMessage = "first one is an invalid parameter";return false;}if(!is_numeric($port)){$this->_errorMessage = "first two is an invalid parameter";return false;}$this->_sendServer = $server;$this->_port = $port;return true;}/*** 设置邮件* @access public* @param array $config 邮件配置信息* 包含邮件发送人、接收人、主题、内容、邮件传输代理的验证信息* @return boolean*/public function setMailInfo($config) {if(!is_array($config) || count($config) _errorMessage = "parameters are required";return false;}$this->_from = $config[from];$this->_to = $config[ o];$this->_subject = $config[subject];$this->_body = $config[ody];$this->_userName = $config[username];$this->_password = $config[password];if(isset($config[isHTML])){$this->_isHTML = $config[isHTML];}return true;}/*** 发送邮件* @access public* @return boolean*/public function sendMail() {$command = $this->getCommand();$this->socket();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() {if($this->_isHTML) {$mail = "MIME-Version:1.0\r\n";$mail .= "Content-type:text/html;charset=utf-8\r\n";$mail .= "FROM:test_from . ">\r\n";$mail .= "TO:_to . ">\r\n";$mail .= "Subject:" . $this->_subject ."\r\n\r\n";$mail .= $this->_body . "\r\n.\r\n";}else{$mail = "FROM:test_from . ">\r\n";$mail .= "TO:_to . ">\r\n";$mail .= "Subject:" . $this->_subject ."\r\n\r\n";$mail .= $this->_body . "\r\n.\r\n";}$command = array(array("HELO sendmail\r\n", 250),array("AUTH LOGIN\r\n", 334),array(base64_encode($this->_userName) . "\r\n", 334),array(base64_encode($this->_password) . "\r\n", 235),array("MAIL FROM:_from . ">\r\n", 250),array("RCPT TO:_to . ">\r\n", 250),array("DATA\r\n", 354),array($mail, 250),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))){//读取服务器返回$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();}}/*** 建立到服务器的网络连接* @access private* @return boolean*/private function socket() {if(!function_exists("socket_create")) {$this->_errorMessage = "extension php-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;}//连接服务器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 ***********************************/$config = array("from" => "XXXXX","to" => "XXXXX","subject" => "test","body" => "test","username" => "XXXXX","password" => "******",//"isHTML" => true);$mail = new MySendMail();$mail->setServer("");$mail->setMailInfo($config);if(!$mail->sendMail()) {echo $mail->error();return 1;}

如果觉得《php socket通过SMTP发送邮件》对你有帮助,请点赞、收藏,并留下你的观点哦!

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