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包
以下是一个具体实例:
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类跟上面的不相同,我没使过,读者朋友可以尝试一下。
评论