1. 使用mail()函数发送邮件

就是使用系统自带的smtp系统来发送,一般是使用sendmail来发。具体说明可以查看PHP函数手册。

以下是一个简单的示例:

<?php
mail("admin@4u4v.cn", "This is a Subject.", "This is the mail Body.");
?>

 
2. 使用qmail管道的形式发送邮件

在Linux中,使用本地的qmail来发送邮件。

/* 使用qmail发送邮件函数 */
function send_check_mail($email, $subject,$uid,$buffer)
{
    echo "hello";
 $command = "/var/qmail/bin/qmail-inject ".$email; //qmail程序地址,$email是要发送的地址
 $handle = popen($command, "w"); //打开管道
 if (!$handle) {
  return false;
 }
 $from = "4u4v@163.com"; //发件人
 fwrite($handle, "from: ".$from."\n"); //往管道写数据
 fwrite($handle, "return-path: ".$from."\n");
 fwrite($handle, "to: ".$uid."\n");
 fwrite($handle, "subject: ".$subject."\n");
 fwrite($handle, "mime-version: 1.0\n");
 fwrite($handle, "content-type: text/html; charset="UTF-8"\n");
 fwrite($handle, $buffer."\n");
 pclose($handle); //关闭管道
 return true;
}

//测试发送邮件
$subject = "测试邮件";
$uid = $_post['uid']; //from信息
$content= "<html><body>".$u_email
   ." 您好!<br><br>这是一个测试邮件。<br</body></html>"; //内容信息
$u_email = "admin@4u4v.cn"; //发送到的邮箱
if (send_check_mail($u_email, $subject, $uid, $content)) {
 echo "恭喜!已发送邮件到您的邮箱!<br><br>请检查您的邮箱:<font color=#cc0033>".$u_email." 

</font><br><br>". $close;
 } else {
 echo "很不幸,发送邮件到您的邮箱失败,请重试或者联系开发人员。<br><br>". $close;
}


 

3. 利用pear:Net_SMTP类发送邮件

在使用以下源代码前,请配置好pear的路径,并在http://pear.php.net下载Net_SMTP包

阿里云-推广AD

以下是一个具体实例:

require 'Net/SMTP.php'; //引入Net_SMTP包

$host = '163.com';   //smtp服务器的ip或域名
$username= '4u4v';   //登陆smtp服务器的用户名
$password= 'secret';  //登陆smtp服务器的密码
$from = '4u4v@163.com'; //谁发的邮件
$rcpt = array('35991353@qq.com', 'admin@163.com'); //可设多个接收者
$subj = "Subject: 测试邮件\n"; //主题
$body = "这是一个利用pear:Net_SMTP类发送的邮件。";  //邮件内容

/* 建立一个类 */
if (! ($smtp = new Net_SMTP($host))) {
    die("无法初始化类Net_SMTP!\n");
}

/* 开始连接SMTP服务器*/
if (PEAR::isError($e = $smtp->connect())) {
    die($e->getMessage() . "\n");
}

/* smtp需要身份验证 */
$smtp->auth($username,$password,"PLAIN");

/*设置发送者邮箱 */
if (PEAR::isError($smtp->mailFrom($from))) {
    die("无法设置发送者邮箱为 <$from>\n");
}

/* 设置接收邮件者 */
foreach ($rcpt as $to) {
    if (PEAR::isError($res = $smtp->rcptTo($to))) {
        die("邮件无法投递到 <$to>: " . $res->getMessage() . "\n");
    }
}

/* 开始发送邮件内容 */
if (PEAR::isError($smtp->data($subj . "\r\n" . $body))) {
    die("Unable to send data\n");
}

/* 断开连接 */
$smtp->disconnect();
echo "发送成功!";

5. 其他现实方法

比如使用socket,请自己写程式。

PEAR::Mail类跟上面的不相同,我没使过,读者朋友可以尝试一下。