/* fsockopen发送邮件 $to : 目标邮件地址 $username : 用户名称 by Gump http://www.it165.net/*/function sendMail($to, $username=''){ $conf = array( 'from' => 'user@domain.com', //发信人Email地址 'user' => 'user@domain.com', //SMTP认证帐户 'pwd' => 'xxxxxx', //SMTP认证密码 'smtp' => 'smtp.domain.com', //SMTP服务器地址,例如mail.gump.me ); $subject = $username . ',fscockopen发送邮件测试'; $content = <<<EOD <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> </head> <body> <p> $username ,您好,这是一封测试邮件,由php以fsockopen方式发送! </p> </body> </html> EOD; $fp = @fsockopen($conf[smtp], 25, $errno, $errstr, 30); fputs($fp, "HELO hi"."/r/n"); //和服务器打招呼(hi),可省略 fputs($fp, "AUTH LOGIN ".base64_encode($conf[user])."/r/n"); fputs($fp, base64_encode($conf[pwd])."/r/n"); fputs($fp, "MAIL FROM:"."<".$conf[from].">"."/r/n"); fputs($fp, "RCPT TO:"."<".$to.">"."/r/n"); fputs($fp, "DATA "."/r/n"); fgets($fp, 512); $header .= "MIME-Version:1.0/r/n"; $header .= "Content-Type:text/html/r/n"; $header .= "To: ".$to."/r/n"; $header .= "From: ".$conf[from]."<".$conf[from].">/r/n"; $header .= "Subject: ".$subject."/r/n"; $header .= "Date: ".date("r")."/r/n"; fputs($fp, $header."/r/n".$content."/r/n./r/n"); fputs($fp, "QUIT "."/r/n"); $sign = FALSE; while(!feof($fp)){ $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 354) { continue; }else{ $sign = TRUE; } } fclose($fp); return $sign;} //示例if(sendMail('admin@gump.me', 'Gump')){ echo '发送成功';}else{ echo '发送失败';}
值得说明的是,该方法有许多局限性,若要兼容国内外各大邮件提供商的smtp服务则还要在细节上做很多完善处理,所以在生产环境中还是建议使用已封装好的phpmailerwww.it165.net
PHP编程郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答