📜  在 php 中发送电子邮件 (1)

📅  最后修改于: 2023-12-03 15:07:45.565000             🧑  作者: Mango

在 PHP 中发送电子邮件

在 Web 开发中,发送电子邮件是一个经常需要处理的任务。PHP 提供了内置函数和库,使得发送电子邮件变得非常容易。本文将介绍如何在 PHP 中发送电子邮件。

准备工作

在发送电子邮件之前,您需要确保您有可用的 SMTP 服务器。如果您没有自己的 SMTP 服务器,您可以使用第三方提供的 SMTP 服务器,例如 Gmail。

发送简单邮件

以下是一个简单的 PHP 脚本,用于发送一封简单的电子邮件。

<?php
$to = "recipient@example.com";
$subject = "测试邮件";
$message = "这是一封测试邮件。";
$headers = "From: sender@example.com\r\n" .
           "Reply-To: sender@example.com\r\n" .
           "X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
?>

在这个例子中,我们指定了邮件的收件人,主题和消息内容。还设置了电子邮件的头部信息,包括发件人,回复地址和 X-Mailer 头部,指示使用的是 PHP 的版本。

然后,我们使用 mail 函数发送电子邮件。该函数的第一个参数指定收件人的电子邮件地址,第二个参数指定邮件的主题,第三个参数指定邮件的正文,第四个参数指定邮件的头部信息。

发送 HTML 邮件

如果您想发送 HTML 格式的电子邮件,您可以在消息内容中包含 HTML 标记。以下是一个示例脚本,用于发送 HTML 格式的电子邮件。

<?php
$to = "recipient@example.com";
$subject = "测试邮件";
$message = "<html><body><h1>这是一封测试邮件</h1><p>这是邮件内容。</p></body></html>";
$headers = "MIME-Version: 1.0\r\n" .
           "Content-type: text/html; charset=utf-8\r\n" .
           "From: sender@example.com\r\n" .
           "Reply-To: sender@example.com\r\n" .
           "X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
?>

在这个例子中,我们在消息内容中包含 HTML 标记,并将邮件标记为 HTML 格式。指定 HTML 内容的 MIME 类型是 Content-type: text/html

发送带附件的邮件

您还可以使用 PHP 发送带附件的电子邮件。以下是一个示例脚本,用于发送带有附件的电子邮件。

<?php
$to = "recipient@example.com";
$subject = "测试邮件";
$message = "这是一封测试邮件。";
$file_name = "attachment.txt";
$file_content = file_get_contents($file_name);
$file_content = chunk_split(base64_encode($file_content));
$file_type = mime_content_type($file_name);
$boundary = md5(time());

$headers = "MIME-Version: 1.0\r\n" .
           "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n" .
           "From: sender@example.com\r\n" .
           "Reply-To: sender@example.com\r\n" .
           "X-Mailer: PHP/" . phpversion();

$body = "--$boundary\r\n" .
        "Content-type: text/plain; charset=utf-8\r\n" .
        "Content-Transfer-Encoding: 8bit\r\n\r\n" .
        "$message\r\n" .
        "--$boundary\r\n" .
        "Content-type: $file_type; name=\"$file_name\"\r\n" .
        "Content-Transfer-Encoding: base64\r\n" .
        "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n" .
        "$file_content\r\n" .
        "--$boundary--";

mail($to, $subject, $body, $headers);
?>

在这个例子中,我们首先读取附件文件的内容,并将其转换为 base64 编码的字符串。然后,我们确定附件的 MIME 类型和文件名,以便邮件客户端可以正确处理附件。

我们使用分割线 (boundary) 分隔邮件正文和附件。邮件头部将指定邮件的 MIME 类型为 multipart/mixed,表示邮件包含多个部分。第一个分隔线后的部分是纯文本消息正文,第二个分隔线后的部分是附件。注意,在这个例子中,我们使用了 mime_content_type 函数来确定附件的 MIME 类型。

总结

在 PHP 中发送电子邮件非常容易。使用 mail 函数和一些常用的邮件头部,您可以创建和发送简单或复杂的电子邮件,并带有附件。了解这些技巧对于任何 Web 开发人员来说都是非常有用的。