這個在網上可以找到多相關的例子,可以自己實驗一下使用telnet去連接mail服務器
$ telnet 郵箱SMTP服務地址 25 Trying 郵箱服務IP地址... Connected to 郵箱SMTP服務地址. Escape character is '^]'. exchange郵箱服務器地址 Microsoft ESMTP MAIL Service ready at Sat, 2 Jun 2012 15:02:12 +0800 EHLO 127.0.0.1 -exchange郵箱服務器地址 Hello [郵箱服務IP地址] -SIZE -PIPELINING -DSN -ENHANCEDSTATUSCODES -X-ANONYMOUSTLS -AUTH NTLM LOGIN -X-EXPS GSSAPI NTLM -8BITMIME -BINARYMIME -CHUNKING -XEXCH50 XRDST AUTH LOGIN VXNlcm5hbWU6 用戶名(base64_encode) UGFzc3dvcmQ6 密碼(base64_encode) 2.7.0 Authentication successful MAIL FROM:發件箱地址 2.1.0 Sender OK RCPT TO:收件箱地址 2.1.5 Recipient OK DATA Start mail input; end with <CRLF>.<CRLF> 要發送的內容(這里的相關的規范有很多) . 2.6.0 <0b476f30-3b96-4e3d-84d2-395a96d34000@exchange郵箱服務器地址> Queued mail for delivery QUIT 2.0.0 Service closing transmission channel Connection closed by foreign host.
<?php //author http://www.lai18.comheader("content-type:text/html;charset=utf-8"); $smtp = array( "url" => "郵箱SMTP服務器地址", "port" => "郵箱SMTP服務器端口", // 一般為25 "username" => "用戶名", "password" => "密碼", "from" => "發件地址", "to" => "收件地址", "subject" => "測試一下標題", "body" => "測試一下內容" ); $CRLF = ""; $test = ""; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $smtp['url']); curl_setopt($curl, CURLOPT_PORT, $smtp['port']); curl_setopt($curl, CURLOPT_TIMEOUT,10); function inlineCode($str){ $str = trim($str); return $str?'=?UTF-8?B?'.base64_encode($str).'?= ':''; } function buildHeader($headers){ $ret = ''; foreach($headers as $k=>$v){ $ret.=$k.': '.$v.""; } return $ret; } // $header = array( 'Return-path'=>'<'.$smtp['from'].'>', 'Date'=>date('r'), 'From'=> '<'.$smtp['from'].'>', 'MIME-Version'=>'1.0', 'Subject'=>inlineCode($smtp['subject']), 'To'=>$smtp['to'], 'Content-Type'=>'text/html; charset=UTF-8; format=flowed', 'Content-Transfer-Encoding'=>'base64' ); $data = buildHeader($header).$CRLF.chunk_split(base64_encode($smtp['body'])); $content = "EHLO ".$smtp["url"].$CRLF; // 先得hello一下 $content .= "AUTH LOGIN".$CRLF.base64_encode($smtp["username"]).$CRLF.base64_encode($smtp["password"]).$CRLF; // 驗證登陸 $content .= "MAIL FROM:".$smtp["from"].$CRLF; // 發件地址 $content .= "RCPT TO:".$smtp["to"].$CRLF; // 收件地址 $content .= "DATA".$CRLF.$data.$CRLF.".".$CRLF; // 發送內容 $content .= "QUIT".$CRLF; // 退出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl接收返回數據 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $content); $test = curl_exec($curl); var_dump($test); echo "<br/>"; var_dump($content); // 結束 curl_close($curl);
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答