20080511 - php send_mail()

 

写了一个网站,反馈页面要用到 php 发邮件,无奈网站空间的 php 没有配置可用的邮件服务器,发现 php 也可通过
socket 裸发邮件。配一个可用的帐号,下面函数就可用了。
 

 1 function  send_mail( $to ,   $subject   =   ' 未标题 ' ,   $body ){
 2    $loc_host   =   " smtp.126.com " ;
 3    $smtp_acc   =   " youraccount " ;
 4    $smtp_pass   =   " yourpassword " ;
 5    $smtp_host   =   " smtp.126.com " ;
 6    $from   =   " admin@126.com " ;
 7   
 8    $headers   =   " Content-Type: text/plain; charset=\ " gb2312\ " \r\nContent-Transfer-Encoding:base64 " ;
 9    $lb   =   " \r\n " ;
10    $hdr   =   explode ( $lb ,   $headers );
11    if ( $body ){
12      $bdy   =   preg_replace ( " /^\./ " ,   " .. " ,   explode ( $lb ,   $body ));
13   }
14   
15    $smtp   =   array (
16      array ( " EHLO  " . $loc_host . $lb ,   " 220, 250 " ,   " HELO error:  " ) ,
17      array ( " AUTH LOGIN " . $lb ,   " 334 " ,   " AUTH error:  " ) ,
18      array ( base64_encode ( $smtp_acc ) . $lb ,   " 334 " ,   " AUTHENTIFICATION error:  " ) ,
19      array ( base64_encode ( $smtp_pass ) . $lb ,   " 235 " ,   " AUTHENTIFICATION error: " )
20   );
21   
22    $smtp []  =   array ( " MAIL FROM: < " . $from . " > " . $lb ,   " 250 " ,   " MAIL FROM error:  " );
23    $smtp []  =   array ( " RCPT TO: < " . $to . " > " . $lb ,   " 250 " ,   " RCPT TO error:  " );
24    $smtp []  =   array ( " DATA " . $lb ,   " 354 " ,   " DATA error:  " );
25   
26    $smtp []  =   array ( " From:  " . $from . $lb ,   "" ,   "" );
27    $smtp []  =   array ( " To:  " . $to . $lb ,   "" ,   "" );
28    $smtp []  =   array ( " Subject:  " . $subject . $lb ,   "" ,   "" );
29   
30    foreach ( $hdr   as   $h ){
31      $smtp []  =   array ( $h . $lb ,   "" ,   "" );
32   }
33   
34    $smtp []  =   array ( $lb ,   "" ,   "" );
35   
36    if ( $bdy ){
37      foreach ( $bdy   as   $b ){
38        $smtp []  =   array ( base64_encode ( $b . $lb ) . $lb ,   "" ,   "" );
39     }
40   }
41    $smtp []  =   array ( " . " . $lb ,   " 250 " ,   " DATA(end) error:  " );
42    $smtp []  =   array ( " QUIT " . $lb ,   " 221 " ,   " QUIT error:  " );
43   
44    $fp   =  (@ fsockopen ( $smtp_host ,   25 ));
45    if ( ! $fp echo   " <strong>Error:</strong> Cannot connect to  " . $smtp_host . " <br /> " ;
46    while ( $result   =  @ fgets ( $fp ,   1024 )){
47      if ( substr ( $result ,   3 ,   1 ==   "   " ){  break ; }
48   }
49    $result_str   =   "" ;
50    foreach ( $smtp    as   $req ){
51     @ fputs ( $fp ,   $req [ 0 ]);
52      if ( $req [ 1 ]){
53        while ( $result   =  @ fgets ( $fp ,   1024 )){
54          if ( substr ( $result ,   3 ,   1 ==   "   " ){  break ; }
55       }
56        if ( ! strstr ( $req [ 1 ] ,   substr ( $result ,   0 ,   3 ))){
57          $result_str .=   $reg [ 2 ] . $result . " <br /> " ;
58       }
59     }
60   }
61   @ fclose ( $fp );
62    return   $result_str ;
63 }
64
65

转载于:https://www.cnblogs.com/likun/archive/2008/05/11/1192769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值