现在很多主机空间都是IIS上执行PHP程序,大多不能直接用mail()发送邮件,有了这个类只要你有注册过邮箱,就可以随意的发送邮件,速度也不慢哦。
//******************************
// smtp.php文件
//
//******************************
<?phpclass smtp{ /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Constractor */ function smtp($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 = ereg_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 = ereg_replace("^.+@([^@]+)$", "\1", $address); if (!@getmxrr($domain, $MXHOSTS)) { $this->log_write("Error: Cannot resolve MX \"".$domain."\"\n"); return FALSE; } 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 (!ereg("^[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"); return FALSE;; } flock($fp, LOCK_EX); fputs($fp, $message); fclose($fp); return TRUE; } function strip_comment($address) { $comment = "\([^()]*\)"; while (ereg($comment, $address)) { $address = ereg_replace($comment, "", $address); } return $address; } function get_address($address) { $address = ereg_replace("([ \t\r\n])+", "", $address); $address = ereg_replace("^.*<(.+)>.*$", "\1", $address); return $address; } function smtp_debug($message) { if ($this->debug) { echo $message; } }}?>
//*****************************************************************
// *.php 使用文件,看清楚了,怎么使用在这里
//
//*****************************************************************
<?
require (FILE_DIR."smtp.php");
$smtpserver = "smtp.xxx.com";//SMTP服务器
$smtpserverport =25;//SMTP服务器端口
$smtpusermail = "xxxxx@xxx.com";//SMTP服务器的用户邮箱
$smtpemailto = "aaaaa@xxx.com";//发送给谁
$smtpuser = "xxxxx";//SMTP服务器的用户帐号
$smtppass = "xxxxx";//SMTP服务器的用户密码
$mailsubject = "Test Subject";//邮件主题
$mailbody = "<h1>This is a test mail</h1>";//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug = TRUE;//是否显示发送的调试信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
?>
分享到:
相关推荐
"非常好用的php发送邮件类" 提供了一种高效、简便的方式来实现PHP中的邮件发送。 这个邮件类很可能基于PHPMailer,这是一个开源且流行的PHP邮件处理库。PHPMailer提供了丰富的功能,包括SMTP验证、HTML邮件、附件...
本资源“功能强大的PHP发邮件类.zip”提供了一个专门用于发送电子邮件的PHP类库,这对于开发者来说是一个非常实用的工具。下面将详细介绍这个类库的核心功能、使用方法以及相关知识点。 首先,PHP的邮件发送功能...
在标题提到的"php 发送邮件类 自测可用",我们可以理解为这是一个作者自定义的、经过测试验证的邮件发送类。这个类可能包含了设置邮件头、添加收件人、设置邮件内容以及实际发送邮件等核心功能。 创建自定义邮件类...
"php 邮件发送类"是一个专门用于通过PHP发送邮件的工具,它可以简化邮件发送过程,使得开发者能够方便地与163和QQ等常见邮箱服务提供商进行通信。在这个场景中,我们使用的类库很可能是PHPMailer,一个广泛使用的...
我们将基于PHP的`PHPMailer`库进行讨论,这是一个强大且广泛使用的邮件发送类。 `PHPMailer`是一个开源的PHP类库,它提供了丰富的功能,包括SMTP验证、HTML邮件、附件支持以及多种错误处理。使用`PHPMailer`可以...
PHPMailer 是一个功能丰富的 PHP 类库,专门用于处理电子邮件的发送。它支持多种协议,如 SMTP、SENDMAIL 和 PHP 的 mail 函数,使得在 PHP 中发送邮件变得简单且灵活。这个类库广泛应用于网站开发中,例如用户注册...
PHP发邮件类是一种利用PHP编程语言编写的类库,它通过封装SMTP协议相关操作来实现通过服务器发送电子邮件的功能。在web开发中,发邮件功能是一个常见的需求,比如用户注册验证、密码找回、系统通知等场景,都需要...
本资源“强大的php发送邮件类.zip”提供了一个专为PHP设计的邮件发送类库,它允许开发者轻松地集成电子邮件功能到他们的项目中。这个类库可能包含了丰富的功能,如SMTP验证、HTML邮件支持、附件上传以及错误处理等,...
在PHP开发中,有时我们需要通过程序来发送电子邮件,例如通知用户、发送验证码或者分享文件等。`PHPMailer`是一个广泛使用的开源库,它允许我们通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,并且支持...
"强大的php发送邮件类" 提供了一个高效且功能丰富的解决方案来处理这一需求。下面将详细介绍这个PHP邮件类及其相关知识点。 首先,PHP本身提供了一个内置的`mail()`函数,用于发送邮件。然而,`mail()`函数的功能...
这里我们讨论的“PHP发邮件类”是一个专门为这个目的编写的PHP类,它允许开发者通过编程方式发送邮件,而无需手动操作SMTP服务器。 首先,PHP的邮件发送功能是通过内置的`mail()`函数实现的,但这个函数的灵活性较...
通过PHPMailer,我们可以轻松地设置SMTP服务器(如Gmail、Yahoo或自建SMTP服务器),发送HTML邮件,添加附件,以及设置邮件头信息,如发件人、收件人、抄送人等。使用PHPMailer时,我们需要下载其源码,将其引入到...
这是从PHP168系统中分离出来的SMTP发送邮件类,很好用的。配置好邮件服务器的相关信息,即可成功发送邮件。 部分代码: require_once("class.mail.php"); /** *服务器信息 */ $MailServer = 'mail.tulou.com'; //...
PHPMailer是一款广受欢迎的PHP邮件发送库,它极大地简化了通过PHP发送电子邮件的过程。这个类库不仅支持发送HTML内容的电子邮件,还提供了丰富的功能,如添加附件、设置SMTP服务器进行身份验证、处理抄送和密送等。...
通过这个类,`phpMailer`能够与SMTP服务器进行交互,完成邮件的发送。 在实际使用`phpMailer`时,开发者首先需要在PHP脚本中引入`class.phpmailer.php`,然后创建一个`PHPMailer`对象,设置必要的参数(如邮件...
经典PHP发送邮件类··每分钟发送20个左右··经典稳定··
功能齐全的php发送邮件类,不但能发html格式的邮件,还可以发附件,函数setTo($inAddress) :用于处理邮件的地址 参数 $inAddress 为包涵一个或多个字串,email地址变量,使用逗号来分割多个邮件地址 默认返回值为...
标签中的"php发邮件"、"发邮件"、"邮件类"进一步强调了这个压缩包的内容是关于使用PHP进行邮件发送的代码资源,包括可能的示例、类库文件或其他相关工具。 在压缩包的文件名称列表中,只有一个名为"smtp"的文件,这...