php使用smtp發送郵件的實現代碼

來源:互聯網
上載者:User
為大家舉一個php使用smtp發送郵件的代碼,簡單實用,有需要的朋友,可以參考下。完整代碼如下。
 '指令碼學堂', //這裡填寫網站名稱 );$mail = Array ( 'state' => 1, 'server' => 'smtp.abc.com', 'port' => 25, 'auth' => 1, 'username' => 'admin@abc.com', 'password' => '123456', 'charset' => 'gbk', 'mailfrom' => 'admin@abc.com' );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 = chunk_split(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) = explode(" ", 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");}?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.