php 用sock技术发送邮件的函数


Posted in PHP onJuly 21, 2007

使用sock技术发邮件,无需服务器支持。速度快!! 

function send_mail($to,$subject,$body)   
{   
/////////////Smtp信息,可以修改成你的,//////////   
   $loc_host = "longbill";        //发信计算机名,可随意   
  $smtp_acc = "longbill.mail";   //Smtp认证的用户名,   
  $smtp_pass = "longbill";         //Smtp认证的密码,   
  $smtp_host = "smtp.163.com";     //SMTP服务器地址,   
  $from = "longbill.mail@163.com"; //要与smtp信息对应 ,否则会失败   
/////////////Smtp信息完//////////////////////////////////    
  $headers = "Content-Type: text/plain; charset=\"gb2312\"\r\nContent-Transfer-Encoding: base64";   
  $lb="\r\n";                    //linebreak   
  $hdr = explode($lb,$headers);  //解析后的hdr   
  if($body)   
  {   
    $bdy = preg_replace("/^\./","..",explode($lb,$body));   
  }//解析后的Body   
  $smtp = array(   
  //1、EHLO,期待返回220或者250   
  array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),   
  //2、发送Auth Login,期待返回334   
  array("AUTH LOGIN".$lb,"334","AUTH error:"),   
  //3、发送经过Base64编码的用户名,期待返回334   
  array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),   
  //4、发送经过Base64编码的密码,期待返回235   
  array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : "));   
 //5、发送Mail From,期待返回250   
 $smtp[] = array("MAIL FROM: <".$from.">".$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 "<b>Error:</b> Cannot conect to ".$smtp_host."<br>";   
 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."<br>";   
    }   
   }   
 }   
 //关闭连接   
 @fclose($fp);   
 if ($result_str==""){return "发送成功!!";}else {return $result_str;}   
}
PHP 相关文章推荐
php getsiteurl()函数
Sep 05 PHP
深入php var_dump()函数的详解
Jun 05 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
php里array_work用法实例分析
Jul 13 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
php自定义分页类完整实例
Dec 25 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
php 中的closure用法详解
Jun 12 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
Laravel框架下的Contracts契约详解
Mar 17 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 #PHP
在普通HTTP上安全地传输密码
Jul 21 #PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 #PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 #PHP
一段php加密解密的代码
Jul 16 #PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 #PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 #PHP
You might like
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php技巧小结【推荐】
2017/01/19 PHP
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
python中的五种异常处理机制介绍
2014/09/02 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
mac下如何将python2.7改为python3
2018/07/13 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
自荐书模板
2013/12/15 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
横幅标语大全
2014/06/17 职场文书
评先进个人材料
2014/12/29 职场文书
职代会闭幕词
2015/01/28 职场文书
八一建军节主持词
2015/07/01 职场文书
高中语文教学反思范文
2016/02/16 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
56句经典英文座右铭
2019/08/09 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Nginx 匹配方式
2022/05/15 Servers
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript