使用php发送邮件主要有两种方式:
1.使用mail函数发送
2.通过 Socket方式发送
1. mail()函数发送邮件
mail()函数目前不支持远程smtp的验证,如果使用此方式,本地服务器需要支持smtp服务,windows 系统下可以通过安装IIS组件里的“SMTP Service”来配置smtp服务器环境,linux系统下可以通过安装其它mail组件系统来配置smtp服务。服务器环境配置好以后,下面看一下使用方法。
mail(to,subject,message,headers,parameters) |
简单实例:
<?php $to = "test@phpabc.cn"; $subject = "Test Subject"; $message = "This is the test email."; $from = "youremail@phpabc.cn"; $headers = "From: $from"; mail($to,$subject,$message,$headers); ?> |
2. 使用Socket方式发送邮件
使用Socket方式,可以利用远程smtp服务器发送邮件,Socket支持远程 smtp验证,所以这也是Socket方式一个比较灵活的地方,如果本地服务器不支持smtp,使用mail()函数会出错,此时可以考虑使用 Socket方式发送邮件,目前网上有比较多的Socket发送邮件类的源码,可以参考一下。
使用Socket的第一步,需要你有一个可用的邮箱(126或163都可以,当然其它的也行)。
网上的部分参考代码:
".$lb,"250","MAIL FROM error: "); //6、发送Rcpt To。期待返回250 $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: "); //7、发送DATA,期待返回354 $smtp[] = array("DATA".$lb,"354","DATA error: "); //8.0、发送From $smtp[] = array("From: ".$from.$lb,"",""); //8.2、发送To $smtp[] = array("To: ".$to.$lb,"",""); //8.1、发送标题 $smtp[] = array("Subject: ".$subject.$lb,"",""); //8.3、发送其他Header内容 foreach($hdr as $h) {$smtp[] = array($h.$lb,"","");} //8.4、发送一个空行,结束Header发送 $smtp[] = array($lb,"",""); //8.5、发送信件主体 if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,"","");}} //9、发送“.”表示信件结束,期待返回250 $smtp[] = array(".".$lb,"250","DATA(end)error: "); //10、发送Quit,退出,期待返回221 $smtp[] = array("QUIT".$lb,"221","QUIT error: "); // 打开smtp服务器端口 $fp=@fsockopen($smtp_host, 25); if(!$fp) echo "<strong>Error:</strong> Cannot conect to ".$smtp_host." "; while($result = @fgets($fp, 1024)){if(substr($result,3,1) == " ") { break; }} $result_str=""; //发送smtp数组中的命令/数据 foreach($smtp as $req){ //发送信息 @fputs($fp, $req[0]); //如果需要接收服务器返回信息,则 if($req[1]){ //接收信息 while($result = @fgets($fp, 1024)){ if(substr($result,3,1) == " ") { break; } }; if (!strstr($req[1],substr($result,0,3))){ $result_str.=$req[2].$result." "; } } } //关闭连接 @fclose($fp); return $result_str; } ?> |
使用方法:
if(send_mail('test@qq.com',' 邮件主题','邮件内容')==""){ echo "发送成功! "; } else{ echo "发送失败! "; } |