手机
当前位置:查字典教程网 >编程开发 >php教程 >php win下Socket方式发邮件类
php win下Socket方式发邮件类
摘要:复制代码代码如下:测试方法一样。运行代码查看代码复制代码打印关于

复制代码 代码如下:

<?php

/*

* php smtp发送邮件Scoket类

* ZhozPhpSmtpSendMail.php

* Created on 2008/09/02 zhoz.com

* @author zhoz

* v 1.72 update 2008/09/26 zhoz.Com

*/

class ZhozPhpSmtpSendMail {

//您的SMTP 服务器供应商,可以是域名或IP地址

var $smtp = "";

//SMTP需要要身份验证设值为 1, 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。

var $check = 1;

//您的email帐号名称

var $username = "";

//您的email密码

var $password = "";

//此email 必需是发信服务器上的email

var $s_from = "";

/*

* 功能:发信初始化设置

* $from 你的发信?衿魃系挠氏?

* $password 你的邮箱密码

* $smtp 您的SMTP 服务器供应商,可以是域名或IP地址

* $check SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证

*/

function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {

if( preg_match("/^[^d-_][w-]*[^-_]@[^-][a-zA-Zd-]+[^-](.[^-][a-zA-Zd-]*[^-])*.[a-zA-Z]{2,3}/", $from ) ) {

$this->username = substr( $from, 0, strpos( $from , "@" ) );

$this->password = $password;

$this->smtp = $smtp ? $smtp : $this->smtp;

$this->check = $check;

$this->s_from = $from;

}

}

/*

* 功能:发送邮件

* $to 目标邮箱

* $from 来源邮箱

* $subject 邮件标题

* $message 邮件内容

*/

function zhoz_send ($to, $from, $subject, $message) {

//连接服务器

$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);

if (!$fp ) return "联接服务器失败".__LINE__;

set_socket_blocking($fp, true );

$lastmessage=fgets($fp,512);

if ( substr($lastmessage,0,3) != 220 ) return "错误信息1:$lastmessage".__LINE__;

//HELO

$yourname = "YOURNAME";

if($this->check == "1") $lastact="EHLO ".$yourname."rn";

else $lastact="HELO ".$yourname."rn";

fputs($fp, $lastact);

$lastmessage == fgets($fp,512);

if (substr($lastmessage,0,3) != 220 ) return "错误信息2:$lastmessage".__LINE__;

while (true) {

$lastmessage = fgets($fp,512);

if ( (substr($lastmessage,3,1) != "-") or (emptyempty($lastmessage)) )

break;

}

//身份验证

if ($this->check=="1") {

//验证开始

$lastact="AUTH LOGIN"."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 334) return "错误信息3:$lastmessage".__LINE__;

//用户姓名

$lastact=base64_encode($this->username)."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 334) return "错误信息4:$lastmessage".__LINE__;

//用户密码

$lastact=base64_encode($this->password)."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != "235") return "错误信息5:$lastmessage".__LINE__;

}

//FROM:

$lastact="MAIL FROM: <". $this->s_from . ">rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 250) return "错误信息6:$lastmessage".__LINE__;

//TO:

$lastact="RCPT TO: <". $to ."> rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 250) return "错误信息7:$lastmessage".__LINE__;

//DATA

$lastact="DATArn";

fputs($fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 354) return "错误信息8:$lastmessage".__LINE__;

//处理Subject头

$head="Subject: $subjectrn";

$message = $head."rn".$message;

//处理From头

$head="From: $fromrn";

$message = $head.$message;

//处理To头

$head="To: $torn";

$message = $head.$message;

//加上结束串

$message .= "rn.rn";

//发送信息

fputs($fp, $message);

$lastact="QUITrn";

fclose($fp);

error_log("send over------->ok!!", 0);

return true;

}

}

?>

<?php

/*

* php smtp发送邮件Scoket类

* ZhozPhpSmtpSendMail.php

* Created on 2008/09/02 zhoz.com

* @author zhoz

* v 1.72 update 2008/09/26 zhoz.Com

*/

class ZhozPhpSmtpSendMail {

//您的SMTP 服务器供应商,可以是域名或IP地址

var $smtp = "";

//SMTP需要要身份验证设值为 1, 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。

var $check = 1;

//您的email帐号名称

var $username = "";

//您的email密码

var $password = "";

//此email 必需是发信服务器上的email

var $s_from = "";

/*

* 功能:发信初始化设置

* $from 你的发信服务器上的邮箱

* $password 你的邮箱密码

* $smtp 您的SMTP 服务器供应商,可以是域名或IP地址

* $check SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证

*/

function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {

if( preg_match("/^[^d-_][w-]*[^-_]@[^-][a-zA-Zd-]+[^-](.[^-][a-zA-Zd-]*[^-])*.[a-zA-Z]{2,3}/", $from ) ) {

$this->username = substr( $from, 0, strpos( $from , "@" ) );

$this->password = $password;

$this->smtp = $smtp ? $smtp : $this->smtp;

$this->check = $check;

$this->s_from = $from;

}

}

/*

* 功能:发送邮件

* $to 目标邮箱

* $from 来源邮箱

* $subject 邮件标题

* $message 邮件内容

*/

function zhoz_send ($to, $from, $subject, $message) {

//连接服务器

$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);

if (!$fp ) return "联接服务器失败".__LINE__;

set_socket_blocking($fp, true );

$lastmessage=fgets($fp,512);

if ( substr($lastmessage,0,3) != 220 ) return "错误信息1:$lastmessage".__LINE__;

//HELO

$yourname = "YOURNAME";

if($this->check == "1") $lastact="EHLO ".$yourname."rn";

else $lastact="HELO ".$yourname."rn";

fputs($fp, $lastact);

$lastmessage == fgets($fp,512);

if (substr($lastmessage,0,3) != 220 ) return "错误信息2:$lastmessage".__LINE__;

while (true) {

$lastmessage = fgets($fp,512);

if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )

break;

}

//身份验证

if ($this->check=="1") {

//验证开始

$lastact="AUTH LOGIN"."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 334) return "错误信息3:$lastmessage".__LINE__;

//用户姓名

$lastact=base64_encode($this->username)."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 334) return "错误信息4:$lastmessage".__LINE__;

//用户密码

$lastact=base64_encode($this->password)."rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != "235") return "错误信息5:$lastmessage".__LINE__;

}

//FROM:

$lastact="MAIL FROM: <". $this->s_from . ">rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 250) return "错误信息6:$lastmessage".__LINE__;

//TO:

$lastact="RCPT TO: <". $to ."> rn";

fputs( $fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 250) return "错误信息7:$lastmessage".__LINE__;

//DATA

$lastact="DATArn";

fputs($fp, $lastact);

$lastmessage = fgets ($fp,512);

if (substr($lastmessage,0,3) != 354) return "错误信息8:$lastmessage".__LINE__;

//处理Subject头

$head="Subject: $subjectrn";

$message = $head."rn".$message;

//处理From头

$head="From: $fromrn";

$message = $head.$message;

//处理To头

$head="To: $torn";

$message = $head.$message;

//加上结束串

$message .= "rn.rn";

//发送信息

fputs($fp, $message);

$lastact="QUITrn";

fclose($fp);

error_log("send over------->ok!!", 0);

return true;

}

}

?>

测试方法一样。

运行代码查看代码复制代码打印关于

<?php

/**

* ZhozPhpSmtpSendMail.php

* Created on 2008/09/02 zhoz.com

* php smtp发送邮件类

* 代替mail():因为它报错,我又不想

*/

// 这里配置发信服务器信息,如果不改也可以正常使用:

$from = 'zhoz@zhoz.com'; // 你的发信服务器上的邮箱

$password = 'zhoz'; // 你的邮箱密码

$smtp = 'smtp.zhoz.com'; // 您的SMTP 服务器供应商,可以是域名或IP地址

// 类初始化

$zhoz_obj = new ZhozPhpSmtpSendMail($from, $password, $smtp);

// 发送开始

$status = $zhoz_obj->zhoz_send("zhoz008@126.com", "zhoz@zhoz.com", "subject is zhoz", "body is zhoz.com");

if($status) {

echo $status;

echo "no---------";

} else {

echo "send ok-----------------!";

die;

}

// 结果当然是:send ok-----------------!

?>

【php win下Socket方式发邮件类】相关文章:

用Socket发送电子邮件

微信access_token的获取开发示例

PHP的类 功能齐全的发送邮件类

php中文件上传的安全问题

php中set_error_handler的用法总结

给多个地址发邮件的类

Session的工作方式

php中命名空间namespace用法介绍

web方式ftp

php中关于socket的系列函数总结

精品推荐
分类导航