1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发。这个按照各个系统不同而定。使用参考手册。 2. 使用管道的形式 昨天刚测试成功,使用本地的qmail来发送邮件。 /* 使用qmail发送邮件函数 */ function send_check_mail($email, $subject,$uid,$buffer) { $command = "/var/qmail/bin/qmail-inject ".$email; //qmail程序地址,$email是要发送的地址 $handle = popen($command, "w"); //打开管道 if (!$handle) { return false; } $from = "webmaster@unixsky.net"; //发件人 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=\"gb2312\"\n\n"); fwrite($handle, $buffer."\n"); pclose($handle); //关闭管道 return true; } ------------------测试发送邮件: //发送邮件 $subject = "测试邮件"; $uid = $_POST['uid']; //from信息 $content = "".$u_email ." 您好! 谢谢,本邮件测试! "; //内容信息 $u_email = "heiyeluren@yahoo.com.cn"; //发送到的邮箱 if (send_check_mail($u_email, $subject, $uid, $content)) { echo "恭喜!发送投票邮件到您的邮箱! 请检查您的邮箱:".$u_email." ". $close; } else { echo "很不幸,发送投票邮件到您的邮箱失败,请重试或者联系开发人员。 ". $close; } 当然,也可以使用相同的方法来处理sendmail的进程来发送邮件。 下面代码示例: $pp = popen("/usr/sbin/sendmail -t", "w") or die("Cannot fork sendmail"); fputs($pp, "To: sterling@designmultimedia.com\r\n"); fputs($pp, "Reply-to: $senders_email\r\n"); fputs($pp, "From: $senders_email\r\n"); fputs($pp, "Subject The Results of your form\r\n\r\n"); fputs($pp, "$senders_email sent the fllowing comments:\r\n"); fputs($pp, $comments); pclose($pp) or die("Cannot close pipe to sendmail"); ?> 其实这种管道的方法比较底层,取决于你所调用程序的稳定性。所以是一种可选的发送邮件的方式。 3. 使用phpmailer类 是一个开源的发送邮件类,主站:http://phpmailer.sourceforge.net 里面是两个文件,一个是class.smtp.php,还有以个是class.phpmailer.php,使用方法可以参考下面的文章: http://blog.jianqing.net/2005/05/02/201-phpmailer 另外加上官方网站的使用方法: Examples using phpmailer 1. Advanced Example This demonstrates sending out multiple email messages with binary attachments from a MySQL database with multipart/alternative support. require("class.phpmailer.php"); $mail = new phpmailer(); $mail->From = "list@example.com"; $mail->FromName = "List manager"; $mail->Host = "smtp1.example.com;smtp2.example.com"; $mail->Mailer = "smtp"; @MYSQL_CONNECT("localhost","root","password"); @mysql_select_db("my_company"); $query?=?SELECT full_name, email,爌hoto燜ROM employee燱HERE爄d=$id"; $result?燖MYSQL_QUERY($query); while ($row = mysql_fetch_array ($result)) { // HTML body $body = "Hello " . $row["full_name"] . ", "; "; ." 您好! 谢谢,本邮件测试! "; //内容信息 $u_email = "heiyeluren@yahoo.com.cn"; //发送到的邮箱 $smtp = new Net_SMTP('192.168.0.1'); //smtp服务器 $smtp->connect(); //连接服务器 $smtp->helo('unixsky.net'); //发送HELO信息给服务器 $smtp->mailFrom('heiyeluren@unixsky.net'); //发件人地址 $smtp->rcptTo($u_email); //收件人地址 $date = date('r'); //获取发信日期 $smtp->data("Date: $date\r\nFrom: vote@eyou.net\r\nTo: $u_email\r\nSubject: $subject\r\nContent-Type: text/html; charset=\"gb2312\"\r\n\r\n$content\r\n"); //添加发送数据并且发送 $smtp->disconnect(); //关闭连接 5. 其他方法 比如使用socket,自己写程序。 PEAR::Mail类跟上面的不一样,我没使过,可以尝试一下。 其他方法。。。 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 01:32 , Processed in 0.106710 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.