template design by http://www.20shx.com/
时间:2014-02-24 发布人:SHX 浏览次数:6915 评论:3
在很多时候,我们需要网站做一些发邮件的工作。比如:邮箱验证、密码找回等。下面就给大家介绍一个利用smtp发送邮件的方式:
<?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($fp, base64_encode($mail['username'])."\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 334) { exit("AUTH LOGIN - ".$lastmessage); } fputs($fp, base64_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_to) as $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
'server' => 'smtp.qq.com'
可以是个大邮箱提供商的,比如QQ邮箱、163邮箱等等;
QQ邮箱:smtp.qq.com
163邮箱: smtp.163.com
QQ个人免费企业邮箱:smtp.exmail.qq.com
上一篇:XP系统的结束,继承者windows7下一篇:三国演义告诉我们的人生60条真理