2020-10-30 06:48:46 登录注册 RSS

当前位置: 公理网 >> 网友举报 >> php利用SMTP发送邮件代码

php利用SMTP发送邮件代码
发布时间:2018-09-18| 来源:公理网 | 点击发表评论

利用smtp发送电子邮件的代码。修改相关参数后,运行sendmail.php即可。不需配置php.ini文件。

声明:本代码仅在www.163.com?和www.tom.com?测试通过,hotmail和yahoo不支持SMTP功能,故不可以实现。感兴趣者可以试试啊...lucas2007.11.08


1、sendmail.php


?
?require_once("./SMTP.Class.inc.php");
?$smtpserver="smtp.163.com";???????????????????????????????????????????//SMTP服务器
?$smtpserverport=25;?????????????????????????????????????????????????????????????//SMTP服务器端口
?$smtpusermail="[email protected]";????????????????????//SMTP服务器的用户邮箱
?$smtpemailto="[email protected]";???????????????????????//发送给谁
?$smtpuser="dengxiao0120";???????????????????????????????????????????????//SMTP服务器的用户帐号(发送者的邮箱)
?$smtppass="198121";????????????????????????????????????????????????????????//SMTP服务器的用户密码(发送者的邮箱密码)
?$mailsubject="helloworld";??????????????????????????????????????????????//邮件主题?


??$mailbody="Thisisatestmailfromliuxueping.";???????????//邮件内容?

?$mailtype="TXT";????????????????????????????????????????????????????????????????????//邮件格式(HTML/TXT),TXT为文本邮件
?$smtp1=newsmtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
?$smtp1-debug=TRUE;?????????//是否显示发送的调试信息
?if($smtp1-sendmail($smtpemailto,$smtpusermail,$mailsubject,$mailbody,$mailtype)){
???echo"邮件发送成功!";
?}
?else{
???echo"邮件发送失败!";
?}
??





2、SMTP.Class.inc.php??发送邮件类


?
classsmtp{
/*PublicVariables*/
var$smtp_port;
var$time_out;
var$host_name;
var$log_file;
var$relay_host;
var$debug;
var$auth;
var$user;
var$pass;


/*PrivateVariables*/
var$sock;


/*Constractor*/
functionsmtp($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;//isusedinfsockopen()
???#
???$this-auth=$auth;//auth
???$this-user=$user;
???$this-pass=$pass;
???#?
???$this-host_name="localhost";//isusedinHELOcommand
???$this-log_file="";
???$this-sock=FALSE;
}


/*MainFunction*/
functionsendmail($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;charset=gb2312/r/n";
??$header.="Content-Transfer-Encoding:base64/n/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:ByRedhat(PHP/".phpversion().")/r/n";


?list($msec,$sec)=explode("",microtime());
?$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)));
?}


?$this-Headers=$header;
?$sent=TRUE;


?foreach($TOas$rcpt_to){
??$rcpt_to=$this-get_address($rcpt_to);
??if(!$this-smtp_sockopen($rcpt_to)){
???$this-log_write("Error:Cannotsendemailto".$rcpt_to."/n");
???$sent=FALSE;
??continue;
??}
??if($this-smtp_send($this-host_name,$mail_from,$rcpt_to,$header,$body)){
???$this-log_write("E-mailhasbeensentto".$rcpt_to."/n");
??}else{
???$this-log_write("Error:Cannotsendemailto".$rcpt_to."/n");
???$sent=FALSE;
??}
??fclose($this-sock);
??$this-log_write("Disconnectedfromremotehost/n");
?}
?return$sent;
}


/*PrivateFunctions*/
functionsmtp_send($helo,$from,$to,$header,$body="")
{
?if(!$this-smtp_putcmd("HELO",$helo)){
??return$this-smtp_error("sendingHELOcommand");
?}
?#auth
?if($this-auth){
??if(!$this-smtp_putcmd("AUTHLOGIN",base64_encode($this-user))){
???return$this-smtp_error("sendingHELOcommand");
??}
??if(!$this-smtp_putcmd("",base64_encode($this-pass))){
???return$this-smtp_error("sendingHELOcommand");
??}
?}
?#
?if(!$this-smtp_putcmd("MAIL","FROM:".$from."")){
??return$this-smtp_error("sendingMAILFROMcommand");
?}
?if(!$this-smtp_putcmd("RCPT","TO:".$to."")){
??return$this-smtp_error("sendingRCPTTOcommand");
?}
?if(!$this-smtp_putcmd("DATA")){
??return$this-smtp_error("sendingDATAcommand");
?}
?if(!$this-smtp_message($header,$body)){
??return$this-smtp_error("sendingmessage");
?}
?if(!$this-smtp_eom()){
??return$this-smtp_error("sendingCRLF.CRLF[EOM]");
?}
?if(!$this-smtp_putcmd("QUIT")){
??return$this-smtp_error("sendingQUITcommand");
?}
?returnTRUE;
}


functionsmtp_sockopen($address){
?if($this-relay_host==""){
??return$this-smtp_sockopen_mx($address);
?}
?else{
??return$this-smtp_sockopen_relay();
?}
}


functionsmtp_sockopen_relay(){
?$this-log_write("Tryingto".$this-relay_host.":".$this-smtp_port."/n");
[email protected]($this-relay_host,$this-smtp_port,$errno,$errstr,$this-time_out);
?if(!($this-sock$this-smtp_ok())){
??$this-log_write("Error:Cannotconnencttorelayhost".$this-relay_host."/n");
??$this-log_write("Error:".$errstr."(".$errno.")/n");
??returnFALSE;
?}
?$this-log_write("Connectedtorelayhost".$this-relay_host."/n");
?returnTRUE;;
}


functionsmtp_sockopen_mx($address){
?$domain=ereg_replace("^[email protected]([^@]+)$","/1",$address);
?if([email protected]($domain,$MXHOSTS)){
??$this-log_write("Error:CannotresolveMX/"".$domain."/"/n");
??returnFALSE;
?}
?foreach($MXHOSTSas$host){
??$this-log_write("Tryingto".$host.":".$this-smtp_port."/n");
[email protected]($host,$this-smtp_port,$errno,$errstr,$this-time_out);
??if(!($this-sock$this-smtp_ok())){
???$this-log_write("Warning:Cannotconnecttomxhost".$host."/n");
???$this-log_write("Error:".$errstr."(".$errno.")/n");
???continue;
??}
??$this-log_write("Connectedtomxhost".$host."/n");
??returnTRUE;
?}
?$this-log_write("Error:Cannotconnecttoanymxhosts(".implode(",",$MXHOSTS).")/n");
?returnFALSE;
}


functionsmtp_message($header,$body){
?fputs($this-sock,$header."/r/n".$body);
?$this-smtp_debug("".str_replace("/r/n","/n"."",$header."/n".$body."/n"));
?returnTRUE;
}


functionsmtp_eom(){
?fputs($this-sock,"/r/n./r/n");
?$this-smtp_debug(".[EOM]/n");
?return$this-smtp_ok();
}


functionsmtp_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:Remotehostreturned/"".$response."/"/n");
???????returnFALSE;
???}
???returnTRUE;
}


functionsmtp_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();
}


functionsmtp_error($string){
???$this-log_write("Error:Erroroccurredwhile".$string."./n");
???returnFALSE;
}


functionlog_write($message){
???$this-smtp_debug($message);
???if($this-log_file==""){
???????returnTRUE;?
???}
???$message=date("MdH:i:s").get_current_user()."[".getmypid()."]:".$message;
???if([email protected]_exists($this-log_file)||!([email protected]($this-log_file,"a"))){
???????$this-smtp_debug("Warning:Cannotopenlogfile/"".$this-log_file."/"/n");
???????returnFALSE;;?
???}
???flock($fp,LOCK_EX);
???fputs($fp,$message);
???fclose($fp);
???returnTRUE;
}


functionstrip_comment($address){
???$comment="/([^()]*/)";
???while(ereg($comment,$address)){
???????$address=ereg_replace($comment,"",$address);??
???}?
???return$address;
}


functionget_address($address){?
???$address=ereg_replace("([/t/r/n])+","",$address);
???$address=ereg_replace("^.*(.+).*$","/1",$address);?
???return$address;
}


functionsmtp_debug($message){
???if($this-debug){
???????return$message;?
???}????????
}


}?
?


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

09-194732

smtp.phpclasssmtp{/*PublicVariables*/var$smtp_port;var$time_out;var$host_name;var$log_file;v...


20款PHP版WebMail开源项目
tty521

01-194614

这是09年的文章,已经落伍多年,敬请飘过20款PHP版WebMail开源项目如今互联网巨头提供的企业应用套件中邮件托管是必备服务,而且还始终秉承免费的优良光荣传统,最为让人熟识的恐怕非“瘟多死里屋管理...


SMTP.class.php源代码
lxm88168

06-132288

classSMTP{/***SMTPserverport*@varint*/public$SMTP_PORT=25;/***SMTPreply...


使用PHPMail发送邮箱(163邮箱为例)
37390744.jpg"alt="sinat_37390744">sinat_37390744

01-221.1万

1、下载phpmail压缩包,并解压。2、创建index.html文件。并写入代码。amp;lt;formaction=quot;quot;method=quot;postquot;a...


配置PHP中的mail方法发送邮件
LYH66

01-112.4万

我的环境:XAMPPv3.2.1准备工作1.检查有没有sendmail程序,在xampp安装目录下的sendmail文件夹下。没有则下载sendmail.zip(http://glob.com...


用php发送邮件SMTP
lwx2615

05-04967

require(class.phpmailer.php$mail=newPHPMailer();$mail-IsSMTP();//setmailertouseS...


使用PHP发送邮件的两种方法
rainday0310

03-277.7万

今天研究了一下使用PHP来发送电子邮件,总结了一下,有这么两种方法:一、使用PHP内置的mail()函数看了一下手册,就直接开始写代码了,如下[email protected]$subje...


php使用smtp服务发送邮件第二
zyu67

12-201441

$jieguo=$smtp-sendmail($smtpemailto,$smtpusermail,$mailsubject,$mailbody,$mailtype);$smtpserve...


使用C#发送SMTP的hotmail
bazhangm

03-281274

最近要调查自动发Mail的事情,以前做过的,没太当回事,结果出了不少错,在此留个脚樱??为了测试,送收信都是一个人。完整邮件地址是指和[email protected]一样的。??????????...

最新新闻

手机浏览

公理网 版权所有

公理网 Total 0.018947(s) query 6, 报料QQ:点击这里

给我发消息