20080511 - php send_mail()

博主写网站时,反馈页面需用PHP发邮件,但网站空间的PHP未配置可用邮件服务器,发现PHP可通过socket裸发邮件,配好可用帐号,特定函数即可使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值