$ Telnet Mailbox SMTP Service address 25
Trying mailbox Service IP address ...
Connected to mailbox SMTP service address.
Escape character is ' ^] '.
Exchange Mailbox server address Microsoft ESMTP MAIL Service ready at Sat, 2 June 2012 15:02:12 +0800
EHLO 127.0.0.1
-exchange Mailbox server address Hello [mailbox service IP Address]
-size
-pipelining
-dsn
-enhancedstatuscodes
-x-anonymoustls
-auth NTLM LOGIN
-x-exps GSSAPI NTLM
-8bitmime
-binarymime
-chunking
-xexch50
Xrdst
AUTH LOGIN
Vxnlcm5hbwu6
User name (Base64_encode)
Ugfzc3dvcmq6
Password (base64_encode)
2.7.0 Authentication Successful
MAIL From: Outbox address
2.1.0 Sender OK
RCPT to: Inbox address
2.1.5 Recipient OK
DATA
Start mail input; End With <CRLF>.<CRLF>
The content to be sent (there are a lot of relevant specifications here)
.
2.6.0 <0b476f30-3b96-4e3d-84d2-395a96d34000@exchange Mailbox server address > Queued mail for delivery
QUIT
2.0.0 Service closing transmission channel
Connection closed by foreign host.
PHP Test Code:
The code is as follows |
Copy Code |
<?php Header ("Content-type:text/html;charset=utf-8"); $SMTP = Array ( "url" => "Mailbox SMTP server Address", "Port" => "Mailbox SMTP Server Port",//General 25 "username" => "username", "Password" => "password", "From" => "Send Address", "To" => "receiving address", "Subject" => "test the title", "Body" => "test the content" );
$CRLF = "RN"; $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. n "; } 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; Let's have a hello. $content. = "AUTH LOGIN". $CRLF. Base64_encode ($smtp ["username"]). $CRLF. Base64_encode ($smtp ["Password"]). $CRLF; Verify Login $content. = "MAIL from:". $smtp [' from ']. $CRLF; Send Address $content. = "RCPT to:" $smtp ["to"]. $CRLF; Inbox Address $content. = "DATA". $CRLF. $data. $CRLF. "." $CRLF; Send content $content. = "QUIT". $CRLF; Exit
curl_setopt ($curl, Curlopt_returntransfer, true); Curl Receive returned data curl_setopt ($curl, Curlopt_customrequest, $content); $test = curl_exec ($curl); Var_dump ($test); echo "<br/>rn"; Var_dump ($content);
End Curl_close ($curl); |
Package test + modification took nearly 6 hours to make the product code compatible with Fsockopen and curl
Later, write an SMTP class that is compatible with Fsockopen and curl simple send mail