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 什么是PEAR?(第三篇)
Mar 19 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
php的hash算法介绍
Feb 13 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
Laravel 实现数据软删除功能
Aug 21 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
对javascript和select部件的结合运用
2006/10/09 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
基于JSON数据格式详解
2017/08/31 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python 处理string到hex脚本的方法
2018/10/26 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
python开发一款翻译工具
2020/10/10 Python
Python基于locals返回作用域字典
2020/10/17 Python
python爬虫基础之urllib的使用
2020/12/31 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
公司寄语大全
2014/04/10 职场文书
国际金融专业自荐信
2014/07/05 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书