php 邮件发送

  1. <? 
  2. function send_mail($to$subject = 'No subject'$body,$smtp_acc,$smtp_pass) { 
  3. $loc_host = "service"//发信计算机名,可随意 
  4. //肯能是公司服务器的ip吧 这个参数我也不太清楚
  5. $smtp_host="59.172.218.75";
  6. $from = $smtp_acc
  7. // 其实窝关键搞不清楚的就是这两个参数
  8. $smtp_acc = $smtp_acc//  使用公司的注册用户 
  9. $smtp_pass$smtp_pass//该注册用户的密码
  10. $headers = "Content-Type: text/html; charset=/"utf-8/"/r/nContent-Transfer-Encoding: base64";  
  11. $lb="/r/n"//linebreak 
  12. $hdr = explode($lb,$headers); //解析后的hdr 
  13. if($body) {$bdy = preg_replace("/^/./","..",explode($lb,$body));}//解析后的Body 
  14. $smtp = array
  15. //1、EHLO,期待返回220或者250 
  16. array("EHLO ".$loc_host.$lb,"220,250","HELO error: "), 
  17. //2、发送Auth Login,期待返回334 
  18. array("AUTH LOGIN".$lb,"334","AUTH error:"), 
  19. //3、发送经过Base64编码的用户名,期待返回334 
  20. array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "), 
  21. //4、发送经过Base64编码的密码,期待返回235 
  22. array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : ")); 
  23. //5、发送Mail From,期待返回250 
  24. $smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: "); 
  25. //6、发送Rcpt To。期待返回250 
  26. $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: "); 
  27. //7、发送DATA,期待返回354 
  28. $smtp[] = array("DATA".$lb,"354","DATA error: "); 
  29. //8.0、发送From 
  30. $smtp[] = array("From: ".$from.$lb,"",""); 
  31. //8.2、发送To 
  32. $smtp[] = array("To: ".$to.$lb,"",""); 
  33. //8.1、发送标题 
  34. $smtp[] = array("Subject: ".$subject.$lb,"",""); 
  35. //8.3、发送其他Header内容 
  36. foreach($hdr as $h) {$smtp[] = array($h.$lb,"","");} 
  37. //8.4、发送一个空行,结束Header发送 
  38. $smtp[] = array($lb,"",""); 
  39. //8.5、发送信件主体 
  40. if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,"","");}} 
  41. //9、发送"."表示信件结束,期待返回250 
  42. $smtp[] = array(".".$lb,"250","DATA(end)error: "); 
  43. //10、发送Quit,退出,期待返回221 
  44. $smtp[] = array("QUIT".$lb,"221","QUIT error: "); 
  45. //打开smtp服务器端口 
  46. $fp = @fsockopen($smtp_host, 25); 
  47. if (!$fpecho "<b>Error:</b> Cannot conect to ".$smtp_host."<br>"
  48. while($result = @fgets($fp, 1024)){if(substr($result,3,1) == " ") { break; }} 
  49. $result_str=""
  50. //发送smtp数组中的命令/数据 
  51. foreach($smtp as $req){ 
  52. //发送信息 
  53. @fputs($fp$req[0]); 
  54. //如果需要接收服务器返回信息,则 
  55. if($req[1]){ 
  56. //接收信息 
  57. while($result = @fgets($fp, 1024)){ 
  58. if(substr($result,3,1) == " ") { break; } 
  59. }; 
  60. if (!strstr($req[1],substr($result,0,3))){ 
  61. $result_str.=$req[2].$result."<br>"
  62. //关闭连接 
  63. @fclose($fp); 
  64. return $result_str
  65.   send_mail("guosheng1987@126.com","ss","test",$smtp_acc,$smtp_pass);
  66. ?>

 

小弟愚笨 不太懂什么 stmp协议。

 

不过搞了两天好歹这个脚本是可以成功发送邮件了。先挂在这里吧。

 

不知道我注释的几个地方对不对

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值