php编制发送电子邮件,PHP发送电子邮件类

/***********************************************************************************

使用说明:

$m= new SendM('smtp服务器地址','账号','密码',端口(int),超时重试时间(int));

$m->Send('收件人邮箱 ','主题','邮件正文内容');

使用范例:

$m= new SendM('smtp.yeah.net','testuser','testuserpwd',25,30);

$m->Send('[email protected] ','测试邮件','这是一封邮件发送类的测试邮件,谢谢您的支持');

*************************************************************************************/

class SendM{

private $Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout,$ms,$ending = "\r\n",$endingc="\n";

function __construct($Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout){

$this->Mailhost=$Mailhost;

$this->Mailuser=$Mailuser;

$this->Mailpwd=$Mailpwd;

$this->Mailport=$Mailport;

$this->Mailtimeout=$Mailtimeout;

$this->ConnectSmtpServer();

}

private function ConnectSmtpServer(){

if(!is_string($this->Mailhost)){ settype(trim($this->Mailhost),"string"); }

if(!is_integer($this->Mailport)){ settype(trim($this->Mailport),"integer"); }

if(!is_integer($this->Mailtimeout)){ settype(trim($this->Mailtimeout),"integer"); }

$this->[email protected]($this->Mailhost,$this->Mailport,$this->errorno,$this->errorstr,$this->Mailtimeout);

if(substr(PHP_OS,0,3) != "WIN"){ stream_set_timeout($this->ms, $this->Mailtimeout, 0);}

$rcp = $this->get_echo();

fputs($this->ms,"ehlo bobo".$this->ending);

$rcp = $this->get_echo();

if(substr($rcp,0,3)!='250'){ return false; }

fputs($this->ms,'auth login'.$this->ending);

$rcp = $this->get_echo();

if(substr($rcp,0,3)=='334'){ $this->Auth($this->Mailuser,$this->Mailpwd); }else{ return false; } }

private function Auth($Mailuser,$Mailpwd){

$this->Mailuseren=base64_encode($Mailuser); $this->Mailpwden=base64_encode($Mailpwd);

fputs($this->ms,$this->Mailuseren.$this->ending);

$rcp = $this->get_echo();

fputs($this->ms,$this->Mailpwden.$this->ending);

$rcp = $this->get_echo(); }

private function get_echo(){

$edata=""; while([email protected]($this->ms,600)){ $edata .= $estr;

if(substr($estr,3,1) == " ") { break; } }

return $edata; }

public function Send($to,$subject,$connect){

$host=explode('.',$this->Mailhost);

$fromaddress=$this->Mailuser.'@'.$host[1].'.'.$host[2];

fputs($this->ms,'mail from:'.$this->ending);

$rcp = $this->get_echo();

fputs($this->ms,'rcpt to:'.$this->ending);

$rcp = $this->get_echo();

fputs($this->ms,'data'.$this->ending);

$rcp = $this->get_echo();

fputs($this->ms,"to:$to".$this->endingc);

fputs($this->ms,"from:$fromaddress".$this->endingc);

fputs($this->ms,"subject:$subject".$this->endingc.$this->endingc);

fputs($this->ms,"$connect".$this->endingc);

fputs($this->ms,'.'.$this->ending);

$rcp = $this->get_echo(); if(substr($rcp,0,3)=='250'){header("Location:main_pro.php?act=msg&errors=on&msg=邮件发送成功!已成功提交至对方服务器!"); }else{ header("Location:main_pro.php?act=msg&errors=on&msg=很遗憾,邮件发送失败了!请检查邮件账户配置是否正确!"); }

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值