失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php使用smtp服务发送邮件 第一

php使用smtp服务发送邮件 第一

时间:2018-09-27 02:46:28

相关推荐

php使用smtp服务发送邮件 第一

后端开发|php教程

php使用smtp服务发送邮件 第一

后端开发-php教程

哪里有算命源码,vscode鼠标箭头颜色,ubuntu目录切换,tomcat安装卡住了,sqlite数据库的命令行,爬虫泡酒,php判断图片大小,英文seo如何做,开源 微信网站,dz模板引擎lzw

define(SMTP_STATUS_NOT_CONNECTED, 1, true);define(SMTP_STATUS_CONNECTED,2, true);class smtp{ var $connection; var $recipients; var $headers; var $timeout; var $errors; var $status; var $body; var $from; var $host; var $port; var $helo; var $auth; var $user; var $pass; /*** 参数为一个数组* host SMTP 服务器的主机 默认:localhost* port SMTP 服务器的端口 默认:25* helo 发送HELO命令的名称默认:localhost* user SMTP 服务器的用户名默认:空值* pass SMTP 服务器的登陆密码 默认:空值* timeout连接超时的时间默认:5* @return bool*/ function smtp($params = array()) { if (!defined(CRLF)) { define(CRLF, "\r\n", true); } $this->timeout = 10; $this->status = SMTP_STATUS_NOT_CONNECTED; $this->host= localhost; $this->port= 25; $this->auth= false; $this->user= \; $this->pass= \; $this->errors = array(); foreach ($params AS $key => $value) { $this->$key = $value; } $this->helo= $this->host; // 如果没有设置用户名则不验证 $this->auth = (\ == $this->user) ? false : true; } function connect($params = array()) { if (!isset($this->status)) { $obj = new smtp($params); if ($obj->connect()) {$obj->status = SMTP_STATUS_CONNECTED; } return $obj; } else { if (!empty($GLOBALS[\_CFG][smtp_ssl])) {$this->host = "ssl://" . $this->host; } $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); if ($this->connection === false) {$this->errors[] = Access is denied.;return false; } @socket_set_timeout($this->connection, 0, 250000); $greeting = $this->get_data(); if (is_resource($this->connection)) {$this->status = 2;return $this->auth ? $this->ehlo() : $this->helo(); } else {log_write($errstr, __FILE__, __LINE__);$this->errors[] = Failed to connect to server: . $errstr;return false; } } } /*** 参数为数组* recipients接收人的数组* from 发件人的地址,也将作为回复地址* headers 头部信息的数组* body 邮件的主体*/ function send($params = array()) { foreach ($params AS $key => $value) { $this->$key = $value; } if ($this->is_connected()) { // 服务器是否需要验证 if ($this->auth) {if (!$this->auth()){ return false;} } $this->mail($this->from); if (is_array($this->recipients)) {foreach ($this->recipients AS $value){ $this->rcpt($value);} } else {$this->rcpt($this->recipients); } if (!$this->data()) {return false; } $headers = str_replace(CRLF . ., CRLF . .., trim(implode(CRLF, $this->headers))); $body = str_replace(CRLF . ., CRLF . .., $this->body); $body = substr($body, 0, 1) == . ? . . $body : $body; $this->send_data($headers); $this->send_data(\); $this->send_data($body); $this->send_data(.); return (substr($this->get_data(), 0, 3) === 250); } else { $this->errors[] = Not connected!; return false; } } function helo() { if (is_resource($this->connection)AND $this->send_data(HELO . $this->helo)AND substr($error = $this->get_data(), 0, 3) === 250 ) { return true; } else { $this->errors[] = HELO command failed, output: . trim(substr($error, 3)); return false; } } function ehlo() { if (is_resource($this->connection)AND $this->send_data(EHLO . $this->helo)AND substr($error = $this->get_data(), 0, 3) === 250 ) { return true; } else { $this->errors[] = EHLO command failed, output: . trim(substr($error, 3)); return false; } } function auth() { if (is_resource($this->connection)AND $this->send_data(AUTH LOGIN)AND substr($error = $this->get_data(), 0, 3) === 334AND $this->send_data(base64_encode($this->user)) // Send usernameAND substr($error = $this->get_data(),0,3) === 334AND $this->send_data(base64_encode($this->pass)) // Send passwordAND substr($error = $this->get_data(),0,3) === 235 ) { return true; } else { $this->errors[] = AUTH command failed: . trim(substr($error, 3)); return false; } } function mail($from) { if ($this->is_connected() AND $this->send_data(MAIL FROM:) AND substr($this->get_data(), 0, 2) === 250 ) { return true; } else { return false; } } function rcpt($to) { if ($this->is_connected() AND $this->send_data(RCPT TO:) AND substr($error = $this->get_data(), 0, 2) === 25) { return true; } else { $this->errors[] = trim(substr($error, 3)); return false; } } function data() { if ($this->is_connected() AND $this->send_data(DATA) AND substr($error = $this->get_data(), 0, 3) === 354 ) { return true; } else { $this->errors[] = trim(substr($error, 3)); return false; } } function is_connected() { return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED)); } function send_data($data) { if (is_resource($this->connection)) { return fwrite($this->connection, $data . CRLF, strlen($data) + 2); } else { return false; } } function get_data() { $return = \; $line = \; if (is_resource($this->connection)) { while (strpos($return, CRLF) === false OR $line{3} !== ) {$line = fgets($this->connection, 512);$return .= $line; } return trim($return); } else { return \; } } /*** 获得最后一个错误信息** @access public* @return string*/ function error_msg() { if (!empty($this->errors)) { $len = count($this->errors) - 1; return $this->errors[$len]; } else { return \; } }}?>

手机版表白源码下载,ubuntu u盘 随身,tomcat最大的连接数,网络爬虫立案,php代码装什么软件好,陕西seo网络lzw

如果觉得《php使用smtp服务发送邮件 第一》对你有帮助,请点赞、收藏,并留下你的观点哦!

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