登陸密碼base64後明文發送,認證方式為未加密方式,163的郵箱支持未加密的認證,其他郵箱就未必了,而且像google郵箱也不接受來自本localhost主機發送的郵件,只接受開放smtp服務的主機發送郵件。
以下這段程序是原來寫的,探測smtp主機的,在$server數組中添加smtp主機就可以了,只有返回AUTH LOGIN PLAIN的才可以用妳說的程序發送郵件:
<?
set_time_limit( 0 );
$server = array(
"smtp.163.com",
"smtp.sina.com",
"smtp.google.com",
);
echo "<pre style='font-size:12px;font-family:verdana'>";
foreach ( $server as $key => $val) {
$fp = fsockopen( $val, 25, $errno, $errstr, 10 );
if ( $errno !==0 ) {
echo("Can not connect to $val .\r\n");
continue;
}
echo "\r\n<font color=red>$val</font> \r\n";
echo fread( $fp, 1024);
fputs( $fp, "EHLO localhost\r\n" );
echo fread( $fp, 1024 );
fclose( $fp );