代码无法高亮,请自行复制到PHP代码编辑器查看echo send_mail('此处为收件人邮箱', '发信测试', '测试测试测试测试测试测试');
function send_mail($to, $subject = 'No subject', $body)
{
    $loc_host = 'test';
    //发信计算机名,可随意
    $smtp_acc = 'test@hichina.com';
    //Smtp认证的用户名,类似fuweng@im286.com,或者fuweng
    $smtp_pass = 'test';
    //Smtp认证的密码,一般等同pop3密码
    $smtp_host = 'mx.hichina.com';
    //SMTP服务器地址,类似 smtp.tom.com
    $from = 'test@hichina.com';
    //发信人Email地址,你的发信信箱地址
    $headers = 'Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64';
    $lb = '
';
    //linebreak
    $hdr = explode($lb, $headers);
    //解析后的hdr
    if ($body) {
        $bdy = preg_replace('/^\\./', '..', explode($lb, $body));
    }
    //解析后的Body
    $smtp = array(array('EHLO ' . $loc_host . $lb, '220,250', 'HELO error: '), array('AUTH LOGIN' . $lb, '334', 'AUTH error:'), array(base64_encode($smtp_acc) . $lb, '334', 'AUTHENTIFICATION error : '), array(base64_encode($smtp_pass) . $lb, '235', 'AUTHENTIFICATION error : '));
    //5、发送Mail From,期待返回250
    $smtp = array('MAIL FROM: <' . $from . '>' . $lb, '250', 'MAIL FROM error: ');
    //6、发送Rcpt To。期待返回250
    $smtp = array('RCPT TO: <' . $to . '>' . $lb, '250', 'RCPT TO error: ');
    //7、发送DATA,期待返回354
    $smtp = array('DATA' . $lb, '354', 'DATA error: ');
    //8.0、发送From
    $smtp = array('From: ' . $from . $lb, '', '');
    //8.2、发送To
    $smtp = array('To: ' . $to . $lb, '', '');
    //8.1、发送标题
    $smtp = array('Subject: ' . $subject . $lb, '', '');
    //8.3、发送其他Header内容
    foreach ($hdr as $h) {
        $smtp = array($h . $lb, '', '');
    }
    //8.4、发送一个空行,结束Header发送
    $smtp = array($lb, '', '');
    //8.5、发送信件主体
    if ($bdy) {
        foreach ($bdy as $b) {
            $smtp = array(base64_encode($b . $lb) . $lb, '', '');
        }
    }
    //9、发送“.”表示信件结束,期待返回250
    $smtp = array('.' . $lb, '250', 'DATA(end)error: ');
    //10、发送Quit,退出,期待返回221
    $smtp = array('QUIT' . $lb, '221', 'QUIT error: ');
    //打开smtp服务器端口
    $fp = @fsockopen($smtp_host, 25);
    if (!$fp) {
        echo 'Error: Cannot conect to ' . $smtp_host . '
';
    }
    while ($result = @fgets($fp, 1024)) {
        if (substr($result, 3, 1) == ' ') {
            break;
        }
    }
    $result_str = '';
    //发送smtp数组中的命令/数据
    foreach ($smtp as $req) {
        //发送信息
        @fputs($fp, $req[0]);
        //如果需要接收服务器返回信息,则
        if ($req[1]) {
            //接收信息
            while ($result = @fgets($fp, 1024)) {
                if (substr($result, 3, 1) == ' ') {
                    break;
                }
            }
            if (!strstr($req[1], substr($result, 0, 3))) {
                $result_str .= $req[2] . $result . '
';
            }
        }
    }
    //关闭连接
    @fclose($fp);
    return $result_str;
} 
                                                                
                                     阅读全文
                                
                                
                                     收起全文