PHP邮件代发代码API

时间:2014-02-24  发布人:SHX  浏览次数:6952  评论:3

在很多时候,我们需要网站做一些发邮件的工作。比如:邮箱验证、密码找回等。下面就给大家介绍一个利用smtp发送邮件的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/**
003
 * smtp邮件发送函数
004
 * site www.jbxue.com
005
 使用方法 sendmail('发送地址', '邮件主题', '邮件内容')
006
*/
  
$bfconfig = Array (
 'sitename' => '脚本学堂'//这里填写网站名称
 );
  
$mail = Array (
 'state' => 1,
 'server' => 'smtp.qq.com',
 'port' => 25,
 'auth' => 1,
 'username' => '',//用户名
 'password' => '',//密码
 'charset' => 'gbk',
 'mailfrom' => ''//发件人
 );
  
function sendmail($mail_to$mail_subject$mail_message) {
  
 global $mail$bfconfig;
  
 date_default_timezone_set('PRC');
  
 $mail_subject '=?'.$mail['charset'].'?B?'.base64_encode($mail_subject).'?=';
 $mail_message = (base64_encode(preg_replace("/(^|(\r\n))(\.)/""\1.\3"$mail_message)));
  
 $headers .= "";
 $headers .= "MIME-Version:1.0\r\n";
 $headers .= "Content-type:text/html\r\n";
 $headers .= "Content-Transfer-Encoding: base64\r\n";
 $headers .= "From: ".$bfconfig['sitename']."<".$mail['mailfrom'].">\r\n";
 $headers .= "Date: ".date("r")."\r\n";
 list($msec$sec) = '(" ", microtime())';
 $headers .= "Message-ID: <".date("YmdHis"$sec).".".($msec * 1000000).".".$mail['mailfrom'].">\r\n";
  
 if(!$fp fsockopen($mail['server'], $mail['port'], $errno$errstr, 30)) {
  exit("CONNECT - Unable to connect to the SMTP server");
 }
  
 stream_set_blocking($fp, true);
  
 $lastmessage fgets($fp, 512);
 if(substr($lastmessage, 0, 3) != '220') {
  exit("CONNECT - ".$lastmessage);
 }
  
 fputs($fp, ($mail['auth'] ? 'EHLO' 'HELO')." befen\r\n");
 $lastmessage fgets($fp, 512);
 if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
  exit("HELO/EHLO - ".$lastmessage);
 }
  
 while(1) {
  if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {
    break;
   }
   $lastmessage fgets($fp, 512);
 }
  
 if($mail['auth']) {
  fputs($fp"AUTH LOGIN\r\n");
  $lastmessage fgets($fp, 512);
  if(substr($lastmessage, 0, 3) != 334) {
   exit($lastmessage);
  }
  
  fputs($fpbase64_encode($mail['username'])."\r\n");
  $lastmessage fgets($fp, 512);
  if(substr($lastmessage, 0, 3) != 334) {
   exit("AUTH LOGIN - ".$lastmessage);
  }
  
  fputs($fpbase64_encode($mail['password'])."\r\n");
  $lastmessage fgets($fp, 512);
  if(substr($lastmessage, 0, 3) != 235) {
   exit("AUTH LOGIN - ".$lastmessage);
  }
  
  $email_from $mail['mailfrom'];
 }
  
 fputs($fp"MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/""\\1"$email_from).">\r\n");
 $lastmessage fgets($fp, 512);
 if(substr($lastmessage, 0, 3) != 250) {
  fputs($fp"MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/""\\1"$email_from).">\r\n");
  $lastmessage fgets($fp, 512);
  if(substr($lastmessage, 0, 3) != 250) {
   exit("MAIL FROM - ".$lastmessage);
  }
 }
  
 foreach(explode(','$mail_toas $touser) {
  $touser = trim($touser);
  if($touser) {
   fputs($fp"RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/""\\1"$touser).">\r\n");
   $lastmessage fgets($fp, 512);
   if(substr($lastmessage, 0, 3) != 250) {
    fputs($fp"RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/""\\1"$touser).">\r\n");
    $lastmessage fgets($fp, 512);
    exit("RCPT TO - ".$lastmessage);
   }
  }
 }
  
 fputs($fp"DATA\r\n");
 $lastmessage fgets($fp, 512);
 if(substr($lastmessage, 0, 3) != 354) {
  exit("DATA - ".$lastmessage);
 }
  
 fputs($fp$headers);
 fputs($fp"To: ".$mail_to."\r\n");
 fputs($fp"Subject: $mail_subject\r\n");
 fputs($fp"\r\n\r\n");
 fputs($fp"$mail_message\r\n.\r\n");
 $lastmessage fgets($fp, 512);
 if(substr($lastmessage, 0, 3) != 250) {
  exit("END - ".$lastmessage);
 }
  
 fputs($fp"QUIT\r\n");
}
 
sendmail('1637838569@qq.com''邮件主题''邮件内容')
?>

这里的smtp

1
'server' => 'smtp.qq.com'

可以是个大邮箱提供商的,比如QQ邮箱、163邮箱等等;

QQ邮箱:smtp.qq.com

163邮箱: smtp.163.com

QQ个人免费企业邮箱:smtp.exmail.qq.com

返回

上一篇:XP系统的结束,继承者windows7下一篇:三国演义告诉我们的人生60条真理

我要评论

    loading
 

关闭

loading

回顶部