PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

2016-01-29 15:01 34 1 收藏

PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题),PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

【 tulaoshi.com - PHP 】

 

smtp.php

<?php
class 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;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

#

$this-host_name = "localhost"; //is used in HELO command
$this-log_file = "";

 

$this-sock = FALSE;

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

/* 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("(^|(rn))(.)", "1.3", $body);

$header .= "MIME-Version:1.0rn";

if($mailtype=="HTML"){

$header .= "Content-Type:text/htmlrn";

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

$header .= "To: ".$to."rn";

if ($cc != "") {

$header .= "Cc: ".$cc."rn";

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

$header .= "From: $from<".$from."rn";

$header .= "Subject: ".$subject."rn";

$header .= $additional_headers;

$header .= "Date: ".date("r")."rn";

$header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from."rn";

$TO = explode(",", $this-strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($cc)));

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if ($bcc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($bcc)));

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

$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;

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

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;

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

fclose($this-sock);

$this-log_write("Disconnected from remote hostn");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

return $sent;

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

 

/* Private Functions */

 

function smtp_send($helo, $from, $to, $header, $body = "")

{

if (!$this-smtp_putcmd("HELO", $helo)) {

return $this-smtp_error("sending HELO command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

#auth

if($this-auth){

if (!$this-smtp_putcmd("AUTH LOGIN", base64_encode($this-user))) {

return $this-smtp_error("sending HELO command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_putcmd("", base64_encode($this-pass))) {

return $this-smtp_error("sending HELO command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

#

if (!$this-smtp_putcmd("MAIL", "FROM:<".$from."")) {

return $this-smtp_error("sending MAIL FROM command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_putcmd("RCPT", "TO:<".$to."")) {

return $this-smtp_error("sending RCPT TO command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_putcmd("DATA")) {

return $this-smtp_error("sending DATA command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_message($header, $body)) {

return $this-smtp_error("sending message");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_eom()) {

return $this-smtp_error("sending <CR<LF.<CR<LF [EOM]");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

if (!$this-smtp_putcmd("QUIT")) {

return $this-smtp_error("sending QUIT command");

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

return TRUE;

}

来源:http://www.tulaoshi.com/n/20160129/1495049.html

延伸阅读
标签: Web开发
?//目录操作基类class FileDirectory { var $servermode; var $serverpath; //web服务器目录 var $pagepath; //当前页目录 var $path; //当前目录 var $ffblk; //用于存储有关文件的信息 function FileDirectory() { set_time_limit(0); //设置网页运行时间,0不限 $this-serverpath = $GLOBALS[DOCU...
  文/赵杰 近日,由于市教育城域网网络结构调整,对我校电脑IP地址进行了重新划分。完成后,出现一个问题:教师机和学生机能正常上网,网关服务器只能够登录市教委网站和城域网其他学校网站,不能上因特网。询问市网络中心,得知各学校都暂时存在这个问题,原因是各校网关服务器的外网卡IP地址未能被正确路由到上一级网络中心(...
当今世界,垃圾邮件继续横行,而且日益成为一个严重的问题,因为垃圾邮件制造者也变得越来越聪明了,所以防止垃圾邮件对任何运行邮件服务器的人来说都是一件非常必要的事情。对于使用Linux的单位来说,现在就有一个杰出的防止垃圾邮件的工具:SpamAssasin 。现在我们就看一下如何通过SpamAssasin遏止垃圾邮件。 认识SpamAssassin SpamAssas...
标签: PHP
  通过一个小时的研究和设置.实现了最新的 PHP 5.0 + MYSQL 5.0 + WIN2003. 个人认为还是有必要写个教程出来.因为很多方面和老版本的不尽相同. 说实话自己也是查阅了很多官方文档才解决了很多怪异问题. ========================= 相关软件均可以在 WWW.SKYCN.NET 下载. MYSQL 5.0 FOR WINDOWS PHP 5.0 FOR WINDOWS PHPMYADMIN WIND...

经验教程

866

收藏

21
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部