<?php
/**
* email smtp (support php7)
*
* Modified by: Reson 2017/06
* UPDATE:
* 1、change ereg to preg_match;change ereg_replace to preg_replace.
* 2、change var to public/private.
*
* More: http://www.daixiaorui.com
*
*/
class Smtp
{
/* Public Variables */
public $smtp_port;
public $time_out;
public $host_name;
public $log_file;
public $relay_host;
public $debug;
public $auth;
public $user;
public $pass;
/* Private Variables */
private $sock;
/* Constractor */
function __construct($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
$this->host_name = "localhost"; //is used in HELO command
$this->log_file = "";
$this->sock = FALSE;
}
/* Main Function */
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = preg_replace("/(^|(\r\n))(\.)/", "\1.\3", $body);
$header = "MIME-Version:1.0\r\n";
if($mailtype=="HTML"){
$header .= "Content-Type:text/html\r\n";
}
$header .= "To: ".$to."\r\n";
if ($cc != "") {
$header .= "Cc: ".$cc."\r\n";
}
$header .= "From: $from<".$from.">\r\n";
$header .= "Subject: ".$subject."\r\n";
$header .= $additional_headers;
$header .= "Date: ".date("r")."\r\n";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";
$TO = explode(",", $this->strip_comment($to));
if ($cc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
}
if ($bcc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write("Error: Cannot send email to ".$rcpt_to."\n");
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write("E-mail has been sent to <".$rcpt_to.">\n");
} else {
$this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remote host\n");
}
return $sent;
}
/* Private Functions */
function smtp_send($helo, $from, $to, $header, $body = "")
{
if (!$this->smtp_putcmd("HELO", $helo)) {
return $this->smtp_error("sending HELO command");
}
//auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {
return $this->smtp_error("sending HELO command");
}
if (!$this->smtp_putcmd("", base64_encode($this->pass))) {
return $this->smtp_error("sending HELO command");
}
}
if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {
return $this->smtp_error("sending MAIL FROM command");
}
if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {
return $this->smtp_error("sending RCPT TO command");
}
if (!$this->smtp_putcmd("DATA")) {
return $this->smtp_error("sending DATA command");
}
if (!$this->smtp_message($header, $body)) {
return $this->smtp_error("sending message");
}
if (!$this->smtp_eom()) {
return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");
}
if (!$this->smtp_putcmd("QUIT")) {
return $this->smtp_error("sending QUIT command");
}
return TRUE;
}
function smtp_sockopen($address)
{
if ($this->relay_host == "") {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}
function smtp_sockopen_relay()
{
$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
return FALSE;
}
$this->log_write("Connected to relay host ".$this->relay_host."\n");
return TRUE;
}
function smtp_sockopen_mx($address)
{
$domain = preg_replace("/^.+@([^@]+)$/", "\1", $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write("Error: Cannot resolve MX \"".$domain."\"\n");
return FALSE;
}
//专注与php学习 http://www.daixiaorui.com 欢迎您的访问
foreach ($MXHOSTS as $host) {
$this->log_write("Trying to ".$host.":".$this->smtp_port."\n");
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write("Warning: Cannot connect to mx host ".$host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
continue;
}
$this->log_write("Connected to mx host ".$host."\n");
return TRUE;
}
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");
return FALSE;
}
function smtp_message($header, $body)
{
fputs($this->sock, $header."\r\n".$body);
$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));
return TRUE;
}
function smtp_eom()
{
fputs($this->sock, "\r\n.\r\n");
$this->smtp_debug(". [EOM]\n");
return $this->smtp_ok();
}
function smtp_ok()
{
$response = str_replace("\r\n", "", fgets($this->sock, 512));
$this->smtp_debug($response."\n");
if (!preg_match("/^[23]/", $response)) {
fputs($this->sock, "QUIT\r\n");
fgets($this->sock, 512);
$this->log_write("Error: Remote host returned \"".$response."\"\n");
return FALSE;
}
return TRUE;
}
function smtp_putcmd($cmd, $arg = "")
{
if ($arg != "") {
if($cmd=="") $cmd = $arg;
else $cmd = $cmd." ".$arg;
}
fputs($this->sock, $cmd."\r\n");
$this->smtp_debug("> ".$cmd."\n");
return $this->smtp_ok();
}
function smtp_error($string)
{
$this->log_write("Error: Error occurred while ".$string.".\n");
return FALSE;
}
function log_write($message)
{
$this->smtp_debug($message);
if ($this->log_file == "") {
return TRUE;
}
$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {
$this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n");
没有合适的资源?快使用搜索试试~ 我知道了~
全开源iApp后台带PHP文件源码
共403个文件
php:278个
iapp:49个
png:27个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 189 浏览量
2022-03-23
11:16:03
上传
评论
收藏 5.05MB ZIP 举报
温馨提示
全开源iApp后台带PHP文件源码,网友分享的,这东西怎么用我也不清楚,有懂的拿去研究吧
资源详情
资源评论
资源推荐
收起资源包目录
全开源iApp后台带PHP文件源码 (403个子文件)
api 0B
blessing 9KB
codeIP 15B
cooperation 4KB
docking 3KB
exchange 17B
register.html 2KB
login.html 2KB
wxpay.html 1KB
404.html 1KB
404-2.html 1KB
404-3.html 1KB
index.html 917B
com.app176.iApp 162KB
com.app171.iApp 160KB
com.app166.iApp 159KB
com.app162.iApp 159KB
com.app160.iApp 156KB
com.appdoc146.iApp 109KB
com.appportrait153.iApp 93KB
com.appuserchat2.iApp 83KB
com.appforum171.iApp 76KB
com.appforum152.iApp 75KB
com.appforum166.iApp 70KB
com.appforum153.iApp 70KB
com.appforum154.iApp 70KB
com.appforum134.iApp 70KB
com.appforum131.iApp 70KB
com.appforum.iApp 70KB
com.apponlines.iApp 68KB
com.apponliness.iApp 68KB
com.appMys.iApp 65KB
com.appuserchat.iApp 58KB
com.praise.iApp 47KB
com.apppraise.iApp 47KB
com.appportrait.iApp 43KB
com.appluck.iApp 42KB
com.appepay2.iApp 41KB
com.appinvite.iApp 41KB
com.appchat153.iApp 38KB
com.appadopt.iApp 34KB
com.appentrykalman.iApp 32KB
com.appnews.iApp 31KB
com.appylmh.iApp 28KB
com.appchat.iApp 28KB
com.appcustomshops.iApp 24KB
com.appvote.iApp 24KB
com.appreply.iApp 23KB
com.appimeikalman.iApp 17KB
com.appmail.iApp 17KB
com.appmailcuston.iApp 17KB
com.appshop.iApp 13KB
com.appepay.iApp 13KB
com.apponlineuser.iApp 12KB
com.appxianlu.iApp 12KB
com.appvipif.iApp 11KB
com.appsign2.iApp 11KB
com.applogin2.iApp 11KB
com.applogin3.iApp 11KB
com.appkalman.iApp 11KB
com.appnotices.iApp 7KB
com.apppartner.iApp 7KB
IP 746B
register.iyu 5KB
login.iyu 5KB
echoshop.iyu 4KB
mail.iyu 4KB
chat.iyu 4KB
echoepay.iyu 4KB
adminpass.iyu 3KB
feedback.iyu 3KB
chatlist.iyu 2KB
shop.iyu 2KB
epay.iyu 2KB
name.iyu 2KB
kalman.iyu 2KB
notices.iyu 2KB
partner.iyu 2KB
iyu 1KB
noticeslist.iyu 1KB
sign.iyu 986B
shoplist.iyu 618B
epaylist.iyu 618B
partnerlist.iyu 532B
joke 20KB
404.jpg 20KB
pl1.jpg 3KB
pl2.jpg 3KB
pay.js 2KB
log.js 1KB
reg.js 1KB
new.js 1KB
notice.js 1KB
moneyo 0B
new 146B
pagetime 14B
mail.class.php 9KB
page2.php 8KB
index_pc.php 8KB
forum.php 8KB
共 403 条
- 1
- 2
- 3
- 4
- 5
智慧浩海
- 粉丝: 1w+
- 资源: 5172
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0