/* 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編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答