PHP 编程/邮件
外观
< PHP 编程
mail 函数用于通过 php.ini 配置文件中指定的 SMTP 服务器发送电子邮件。
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
返回的布尔值将显示电子邮件是否已成功发送。
此示例将发送主题为“主题”、内容为“消息”的邮件到电子邮件地址“[email protected]”。 此外,收件人将看到邮件是从“Example2 <[email protected]>”发送的,并且收件人应该回复到“Example3 <[email protected]>”
mail(
"[email protected]", // E-Mail address
"subject", // Subject
"message", // Message
"From: Example2 <[email protected]>\r\nReply-to: Example3 <[email protected]>" // Additional Headers
);
不需要将电子邮件地址写成“姓名 <电子邮件>”格式,只需写“电子邮件”即可。
这将发送与第一个示例相同的邮件,但在邮件中包含 From: 和 Reply-To: 头部。 如果你希望收件人能够回复你,则需要包含这些头部。 此外,一些电子邮件提供商会认为某些头部缺失的邮件是垃圾邮件,因此除非包含正确的头部,否则邮件将最终出现在垃圾邮件文件夹中。
- PHP 默认情况下本身没有任何邮件发送功能。 它需要将邮件传递给本地邮件传输代理,例如 sendmail。 这意味着你不能只是运行 PHP 并期望它发送邮件; 你必须安装邮件传输代理。
- 确保在收件人或主题中没有换行符,否则邮件可能无法正确发送。
- 但是,额外的头部字段 - 应该始终包含 From: 头部 - 也可能包含其他头部。 在 Windows 上的 PHP 中,每个头部之后应该跟着 \r\n,但在 Unix 版本中,你应该只在头部行之间包含 \n。 不要在最终的额外头部行之后添加 \n 或 \r\n。
- to 参数不应该是“姓名 <[email protected]>”形式的地址。 mail 命令在与 MTA 交谈时可能无法正确解析它(尤其是在 Windows 下)。
尤其是在发送多封邮件时,例如在新闻通讯脚本中,错误检测非常重要。
使用此脚本发送邮件,同时警告错误
$result = @mail($to, $subject, $message, $headers);
if ($result) {
echo "Email sent successfully.";
} else {
echo "Email was not sent, as an error occurred.";
}
在下例中,脚本已经得到一个电子邮件列表,我们只需使用与 PHP 中使用 mysql 结果循环相同的步骤。 下面的脚本将尝试向数组中的每个电子邮件地址发送电子邮件,直到它运行完毕。
while ($row = mysql_fetch_assoc($result)) {
mail($row['email'], $subject, $message, null, "-f$fromaddr");
}
然后,如果我们将错误检查集成到多封邮件脚本中,我们将得到以下结果
$errors = 0
$sent = 0
while ($row = mysql_fetch_assoc($result)) {
$result = "";
$result = @mail($row['email'], $subject, $message, null, "-f$fromaddr");
if (!$result) {
$errors = $errors + 1;
}
$sent = $sent + 1;
}
echo "You have sent $sent messages";
echo "However there were $errors errors";