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源代码
Oct 09 PHP
php下的权限算法的实现
Apr 28 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP中的表达式简述
May 29 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP 计算两个特别大的整数实例代码
May 07 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP print类函数使用总结
2010/06/25 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
appium+python adb常用命令分享
2020/03/06 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
关于幼儿的自我评价
2013/12/18 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers