PHP通过mail和qmail发送邮件方法

0 下载量 101 浏览量 更新于2024-08-30 收藏 63KB PDF 举报
本文主要介绍了在PHP中使用两种方式发送邮件,包括`mail()`函数和通过管道利用qmail系统的方式。对于`mail()`函数,它依赖于系统的SMTP服务,通常是sendmail。而通过qmail发送邮件,则是通过执行qmail-inject命令来实现。 ### PHP 发送邮件的方式 #### 1. 使用 `mail()` 函数 `mail()` 是PHP内置的函数,用于发送邮件。它的基本用法如下: ```php mail($to, $subject, $message, $headers); ``` - `$to`: 收件人的邮箱地址。 - `$subject`: 邮件主题。 - `$message`: 邮件正文。 - `$headers`: 可选,包含邮件头部信息,如发件人、回复地址等。 需要注意的是,`mail()` 函数的邮件发送取决于服务器环境配置,比如是否安装了sendmail或者其它SMTP服务器。在某些环境中,可能需要额外设置才能正确发送邮件。 #### 2. 使用管道形式与qmail集成 另一种方法是通过系统管道(pipe)直接调用qmail的`qmail-inject`命令来发送邮件。以下是一个示例函数: ```php function send_check_mail($email, $subject, $uid, $buffer) { $command = "/var/qmail/bin/qmail-inject " . $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; } ``` 这个函数创建了一个管道,并向`qmail-inject`进程写入邮件的头部和内容。这种方法适用于已部署了qmail服务的环境,它允许更灵活地控制邮件发送。 ### 测试邮件发送 在实际应用中,你可以这样测试上述发送邮件的函数: ```php $subject = "测试邮件"; $uid = $_POST['uid']; // from信息 $content = "<html><body>" . $u_email . "你好!<br><br>谢谢,本邮件测试!<br</body></html>"; // 内容信息 $u_email = "hren@yahoo.com.cn"; // 发送到的邮箱 if (send_check_mail($u_email, $subject, $uid, $content)) { echo "邮件发送成功"; } else { echo "邮件发送失败"; } ``` 以上代码会将一封包含HTML内容的测试邮件发送到指定的邮箱地址。 总结来说,PHP发送邮件可以通过标准的`mail()`函数或利用系统服务如qmail进行,每种方式都有其适用场景和优缺点。选择哪种方式取决于你的具体需求和服务器环境。