现在的位置: 首页 > 综合 > 正文

20080511 – php send_mail()

2012年09月14日 ⁄ 综合 ⁄ 共 2097字 ⁄ 字号 评论关闭

 

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

 1function 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(!$fpecho "<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
【上篇】
【下篇】

抱歉!评论已关闭.