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 相关文章推荐
smarty的保留变量问题
Oct 23 PHP
PHP 事务处理数据实现代码
May 13 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 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 pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
网上抓的一个特效
2007/05/11 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python简单的制作图片验证码实例
2017/05/31 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python动态规划算法实例详解
2020/11/22 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
什么是反射
2012/03/17 面试题
党校培训思想汇报
2013/12/30 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
医德医风自我评价2015
2015/03/03 职场文书
工作推荐信模板
2015/03/25 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
班级班风口号大全
2015/12/25 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书