第一步:php连接数据库:dbconnection.php
第二步:邮箱类email.class.php
class smtp
{
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
var $sock;
function smtp($relay_host = , $smtp_port = 25,$auth =false,$user,$pass)
{
$this->debug = false;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = localhost; //is used in helocommand
$this->log_file =;
$this->sock = false;
}
function sendmail($to, $from, $subject = , $body = , $mailtype,$cc = , $bcc = , $additional_headers = )
{
$mail_from =$this->get_address($this->strip_comment($from));
$body = ereg_replace((^|(\r\n))(\\.), \\1.\\3, $body);
$header .= mime-version:1.0\r\n;
if($mailtype==html){
$header .= content-type:text/html\r\n;
}
$header .= to: .$to.\r\n;
if ($cc != ) {
$header .= cc: .$cc.\r\n;
}
$header .= from:$from\r\n;
$header .= subject: .$subject.\r\n;
$header .= $additional_headers;
$header .= date: .date(r).\r\n;
$header .= x-mailer:by redhat (php/.phpversion().)\r\n;
list($msec, $sec) = explode( , microtime());
$header .= message-id: \r\n;
$to = explode(,, $this->strip_comment($to));
if ($cc != ) {
$to = array_merge($to, explode(,,$this->strip_comment($cc)));
}
if ($bcc != ) {
$to = array_merge($to, explode(,,$this->strip_comment($bcc)));
}
$sent = true;
foreach ($to as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write(error: cannot send email to.$rcpt_to.\n);
$sent = false;
continue;
}
if($this->smtp_send($this->host_name,$mail_from, $rcpt_to, $header, $body)) {
$this->log_write(e-mail has been sent to\n);
} else {
$this->log_write(error: cannot send email to\n);
$sent = false;
}
fclose($this->sock);
$this->log_write(disconnected from remotehost\n);
}
echo
;
echo $header;
return $sent;
}
function smtp_send($helo, $from, $to, $header, $body = )
{
if (!$this->smtp_putcmd(helo, $helo)) {
return $this->smtp_error(sending helocommand);
}
#auth
if($this->auth){
if (!$this->smtp_putcmd(auth login,base64_encode($this->user))) {
return $this->smtp_error(sending helocommand);
}
if (!$this->smtp_putcmd(,base64_encode($this->pass))) {
return $this->smtp_error(sending helocommand);
}
}
#
if (!$this->smtp_putcmd(mail,from:)) {
return $this->smtp_error(sending mail fromcommand);
}
if (!$this->smtp_putcmd(rcpt,to:)) {
return $this->smtp_error(sending rcpt tocommand);
}
if (!$this->smtp_putcmd(data)) {
return $this->smtp_error(sending datacommand);
}
if (!$this->smtp_message($header, $body)) {
return $this->smtp_error(sending message);
}
if (!$this->smtp_eom()) {
return $this->smtp_error(sending.[eom]);
}
if (!$this->smtp_putcmd(quit)) {
return $this->smtp_error(sending quitcommand);
}
return true;
}
function smtp_sockopen($address)
{
if ($this->relay_host == ) {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}
function smtp_sockopen_relay()
{
$this->log_write(trying to.$this->relay_host.:.$this->smtp_port.\n);
$this->sock =@fsockopen($this->relay_host,$this->smtp_port, $errno, $errstr,$this->time_out);
if (!($this->sock &&$this->smtp_ok())) {
$this->log_write(error: cannot connenct to relayhost .$this->relay_host.\n);
$this->log_write(error: .$errstr.(.$errno.)\n);
return false;
}
$this->log_write(connected to relay host.$this->relay_host.\n);
return true;;
}
function smtp_sockopen_mx($address)
{
$domain = ereg_replace(^.+@([^@]+)$, \\1, $address);
if (!@getmxrr($domain,$mxhosts)) {
$this->log_write(error: cannot resolve mx\.$domain.\\n);
return false;
}
foreach ($mxhosts as $host) {
$this->log_write(trying to.$host.:.$this->smtp_port.\n);
$this->sock = @fsockopen($host,$this->smtp_port, $errno, $errstr,$this->time_out);
if (!($this->sock &&$this->smtp_ok())) {
$this->log_write(warning: cannot connect to mx host.$host.\n);
$this->log_write(error: .$errstr.(.$errno.)\n);
continue;
}
$this->log_write(connected to mx host.$host.\n);
return true;
}
$this->log_write(error: cannot connect to any mxhosts (.implode(, , $mxhosts).)\n);
return false;
}
function smtp_message($header, $body)
{
fputs($this->sock, $header.\r\n.$body);
$this->smtp_debug(>.str_replace(\r\n, \n.> ,$header.\n> .$body.\n> ));
return true;
}
function smtp_eom()
{
fputs($this->sock, \r\n.\r\n);
$this->smtp_debug(. [eom]\n);
return $this->smtp_ok();
}
function smtp_ok()
{
$response = str_replace(\r\n, ,fgets($this->sock, 512));
$this->smtp_debug($response.\n);
if (!ereg(^[23], $response)) {
fputs($this->sock, quit\r\n);
fgets($this->sock, 512);
$this->log_write(error: remote host returned\.$response.\\n);
return false;
}
return true;
}
function smtp_putcmd($cmd, $arg = )
{
if ($arg != ) {
if($cmd==) $cmd = $arg;
else $cmd = $cmd. .$arg;
}
fputs($this->sock, $cmd.\r\n);
$this->smtp_debug(>.$cmd.\n);
return $this->smtp_ok();
}
function smtp_error($string)
{
$this->log_write(error: error occurred while.$string..\n);
return false;
}
function log_write($message)
{
$this->smtp_debug($message);
if ($this->log_file == ) {
return true;
}
$message = date(m d h:i:s).get_current_user().[.getmypid().]: .$message;
if (!@file_exists($this->log_file)|| !($fp = @fopen($this->log_file, a))) {
$this->smtp_debug(warning: cannot open log file\.$this->log_file.\\n);
return false;
}
flock($fp, lock_ex);
fputs($fp, $message);
fclose($fp);
return true;
}
function strip_comment($address)
{
$comment = \\([^()]*\\);
while (ereg($comment, $address)) {
$address = ereg_replace($comment, , $address);
}
return $address;
}
function get_address($address)
{
$address = ereg_replace(([ \t\r\n])+, , $address);
$address =ereg_replace(^.*.*$,\\1, $address);
return $address;
}
function smtp_debug($message)
{
if ($this->debug) {
echo $message.
;
}
}
function get_attach_type($image_tag) { //
$filedata = array();
$img_file_con=fopen($image_tag,r);
unset($image_data);
while($tem_buffer=addslashes(fread($img_file_con,filesize($image_tag))))
$image_data.=$tem_buffer;
fclose($img_file_con);
$filedata['context'] = $image_data;
$filedata['filename']= basename($image_tag);
$extension=substr($image_tag,strrpos($image_tag,.),strlen($image_tag)-strrpos($image_tag,.));
switch($extension){
case .gif:
$filedata['type'] = image/gif;
break;
case .gz:
$filedata['type'] = application/x-gzip;
break;
case .htm:
$filedata['type'] = text/html;
break;
case .html:
$filedata['type'] = text/html;
break;
case .jpg:
$filedata['type'] = image/jpeg;
break;
case .tar:
$filedata['type'] = application/x-tar;
break;
case .txt:
$filedata['type'] = text/plain;
break;
case .zip:
$filedata['type'] = application/zip;
break;
default:
$filedata['type'] = application/octet-stream;
break;
}
return $filedata;
}
}
?>
第三步:激活类jihuo.php
第四步:发送邮箱类sendemail.php
debug = false;//是否显示发送的调试信息
$toemail = zxwzxw_12@163.com; //收件人邮箱
$actcodes =md5($toemail.mt_rand(111111,999999));
$mmsg = '您已经注册成功 ,请将点击以下链接激活您的账号: 点击激活';
$hh = sqlsrv_query('insert intoactcode(code,email) values('.$actcodes.' , '.$toemail.')',$conn); //把注册时的邮箱号和验证插入数据表中
if($hh){
$smtp->sendmail($toemail, $smtpusermail,$mailsubject, $mmsg,$mailtype); //发送邮件
}
else {
echo '发送失败!';
exit;
}
?>
第五步:最后 : 发送邮箱激活验证.txt
1 建立数据库:addev 表actcode 字段code varchar(50) emailvarchar(50)
2 连接数据:dbconnection.php