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生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
PHP基础学习小结
Apr 17 PHP
浅析php学习的路线图
Jul 10 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
php调用自己java程序的方法详解
May 13 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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
重置版游戏视频
2020/04/09 魔兽争霸
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
php自动加载代码实例详解
2021/02/26 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
Javascript调用C#代码
2011/01/17 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Django中的cookie和session
2019/08/27 Python
python如何输出反斜杠
2020/06/18 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
简历的自我评价
2014/02/03 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
礼貌问候语大全
2015/11/10 职场文书