Heim  >  Artikel  >  Backend-Entwicklung  >  20080511

20080511

WBOY
WBOYOriginal
2016-06-23 14:36:25915Durchsuche

 

写了一个网站,反馈页面要用到 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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP翻页Nächster Artikel:PHP杂记