20080511

WBOY
WBOY原创
2016-06-23 14:36:25941浏览

 

写了一个网站,反馈页面要用到 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:  " . $lb ,   " 250 " ,   " MAIL FROM error:  " );
23    $smtp []  =   array ( " RCPT 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   " Error: Cannot connect to  " . $smtp_host . "
" ;
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 . "
" ;
58       }
59     }
60   }
61   @ fclose ( $fp );
62    return   $result_str ;
63 }
64
65

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:PHP翻页下一篇:PHP杂记