<?php
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
->ms=@fsockopen($
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
($estr=@fgets($
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:<'
.$fromaddress.
'>'
.$
this
->ending);
$rcp = $
this
->get_echo();
fputs($
this
->ms,
'rcpt to:<'
.$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=很遗憾,邮件发送失败了!请检查邮件账户配置是否正确!"
); }
}
}
?>