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 相关文章推荐
sae使用smarty模板的方法
Dec 17 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
php查询操作实现投票功能
May 09 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 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 addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
js类 from qq
2006/11/13 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python Pillow Image Invert
2019/01/22 Python
Django异步任务线程池实现原理
2019/12/17 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
家长通知书家长评语
2014/04/17 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
大学生团员个人总结
2015/02/14 职场文书
保护动物的宣传语
2015/07/13 职场文书
运动会200米广播稿
2015/08/19 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL