首页 > php代码 > 三种php发送邮件实例程序

三种php发送邮件实例程序

我们利用了三种php发送邮件实例程序哦,下面一个个来实例各种发送的发送邮件哦。

<?php
if(send_mail('test@qq.com','邮件主题','邮件内容')==""){ 
echo "发送成功!<br>"; 
} else{ 
echo "发送失败!<br>"; 
}
<?php
$to = "test@test.com";
$subject = "Test Subject";
$message = "This is the test email.";
$from = "youremail@yourdomain.com";
$headers = "From: $from";
mail($to, $subject, $message, $headers);
?>
 <?php
function send_mail($to, $subject = 'No subject', $body) {
    $loc_host = "im286"; //发信计算机名,可随意
    $smtp_acc = "test@126.com"; //Smtp认证的用户名
    $smtp_pass = "******"; //Smtp认证的密码,一般等同pop3密码
    $smtp_host = "smtp.126.com"; //SMTP服务器地址,类似 smtp.tom.com
    $from = "test@126.com"; //发信人Email地址,你的发信信箱地址
    $headers = "Content-Type: text/plain; charset=\"utf-8\" Content-Transfer-Encoding: base64";
    $lb = " "; //linebreak
    $hdr = explode($lb, $headers); //解析后的hdr
    if ($body) {
        $bdy = preg_replace("/^./", "..", explode($lb, $body));
    } //解析后的Body
    $smtp = array(
        //1、EHLO,期待返回220或者250
        array(
            "EHLO " . $loc_host . $lb,
            "220,250",
            "HELO error: "
        ) ,
        //2、发送Auth Login,期待返回334
        array(
            "AUTH LOGIN" . $lb,
            "334",
            "AUTH error:"
        ) ,
        //3、发送经过Base64编码的用户名,期待返回334
        array(
            base64_encode($smtp_acc) . $lb,
            "334",
            "AUTHENTIFICATION error : "
        ) ,
        //4、发送经过Base64编码的密码,期待返回235
        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、发送&ldquo;.&rdquo;表示信件结束,期待返回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 "<b>Error:</b> Cannot conect to " . $smtp_host . "<br>";
    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 . "<br>";
            }
        }
    }
    //关闭连接
    @fclose($fp);
    return $result_str;
}


文章地址:http://www.phprm.com/code/07959db4c35c499d86b72a35f35bad76.html

转载随意^^请带上本文地址!

标签:none

发表留言