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 相关文章推荐
Discuz!下Memcache缓存实现方法
May 28 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
php去除html标记的原生函数详解
Jan 27 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
python之wxPython应用实例
2014/09/28 Python
Python操作MongoDB详解及实例
2017/05/18 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
详解Django中异步任务之django-celery
2020/11/05 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
部队领导证婚词
2014/01/12 职场文书
学生宿舍管理制度
2014/01/30 职场文书
精彩的英文自荐信
2014/01/30 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
财务担保书范文
2014/04/02 职场文书
医学求职自荐信
2014/06/21 职场文书
开票员岗位职责
2015/02/12 职场文书
八一建军节慰问信
2015/02/14 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android