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 相关文章推荐
初探PHP5
Oct 09 PHP
php引用地址改变变量值的问题
Mar 23 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
基于PHP制作验证码
Oct 12 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
phpquery中文手册
Mar 18 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
php计算年龄精准到年月日
2015/11/17 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
对python程序内存泄漏调试的记录
2018/06/11 Python
python实现弹窗祝福效果
2019/04/07 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
Python中itertools的用法详解
2020/02/07 Python
django model通过字典更新数据实例
2020/04/01 Python
python解包用法详解
2021/02/17 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
运动会解说词100字
2014/01/31 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
大学生村官演讲稿
2014/04/25 职场文书
监察建议书格式
2014/05/19 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python