在 PHP 中发送电子邮件

PHP 是最流行的 Web 开发语言之一,也是创建动态 Web 应用程序的流行方式。在本文中,我们将帮助您轻松地在应用程序中配置邮件功能。

那么让我们开始吧!使用 PHP 发送电子邮件有两种基本方法:内置邮件功能和外部邮件包。

PHP内置邮件功能()

PHP 内置的邮件函数 () 非常简单,它提供的发送电子邮件的功能有限。您将无法在电子邮件中添加附件,并且构建带有嵌入图像的漂亮 HTML 模板将是一项棘手的任务。

PHP邮件函数()硬币的另一面是电子邮件是从您的Web服务器发送的,由于怀疑垃圾邮件和列入黑名单等安全问题,这可能会导致可传递性问题。解决此问题的最佳方法是通过 SMTP 服务器发送消息,但是,此功能也受到限制。PHP mail() 通常不允许您使用外部 SMTP 服务器,并且它不支持 SMTP 身份验证。

以下是您可以使用 PHP 的内置邮件函数 () 执行的操作:

  • 创建没有附件和图像的简单 HTML/文本消息
  • 通过 localhost 和 Xmapp 发送电子邮件
  • 包括几个带有“$to”参数的收件人。

它适用于本地环境中的简单、主要基于文本的通知。如果您需要与您的应用程序的用户交流,最好安装一个外部邮件程序包。

如果你还执着于 PHP 内置的 mail function() 并准备好接受挑战,我们来看看基本代码及其主要参数。

语法和参数

PHP 邮件语法非常简单:

<?php
mail($to_email_address,$subject,$message,[$headers],[$parameters]);
?>

它使用以下参数:

  • “$to” = 您的消息收件人。电子邮件地址格式可能是 用户@example.com 或用户 用户@example.com. 一般来说,它需要符合 RFC 2822.
  • “$subject” = 您的邮件主题
  • “$message” = 消息的正文。行应该用 CRLF (\r\n) 分隔。每行不应超过 70 个字符。
  • “[$headers]” = 邮件的其他收件人,可以包含在抄送或密件抄送中。

请注意,标头是可选的,除了“from”标头:必须指定,否则,您将收到 类似警告的错误消息:mail(): “sendmail_from” not set in php.ini or custom “From:” header失踪。

您可以使用其他标题来更改邮件“发件人”地址并设置“回复”地址。

有关详细信息和附加参数,请参阅 PHP 文档.

使用 PHP mail() 函数发送 HTML 电子邮件

消息的正文可以用 HTML 编写。但是,正如我们上面提到的,它应该很简单。在 PHP 邮件函数 () 中,HTML 部分将如下所示:

$message = '
<html>
<head>
  <title>Review Request Reminder</title>
</head>
<body>
  <p>Here are the cases requiring your review in December:</p>
  <table>
    <tr>
      <th>Case title</th><th>Category</th><th>Status</th><th>Due date</th>
    </tr>
    <tr>
      <td>Case 1</td><td>Development</td><td>pending</td><td>Dec-20</td>
    </tr>
    <tr>
      <td>Case 1</td><td>DevOps</td><td>pending</td><td>Dec-21</td>
    </tr>
  </table>
</body>
</html>
';

请务必记住,要发送 HTML 邮件,您需要设置 Content-type 标头:

$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

简单传输协议 (SMTP)

在哪里指定 SMTP 设置?这是一个公平的问题。转到 PHP 安装文件夹并在“php.ini”文件中配置它们。但这仅适用于 localhost 或 Xmapp 之类的解决方案,因为正如我们已经提到的,PHP 邮件功能不支持 SMTP 身份验证,并且不允许通过外部服务器发送消息。

还有一些其他的,相当随意的选择,但我们不会在这里推广它们。或者,我们建议使用外部 PHP 邮件包通过外部 SMTP 服务器发送电子邮件。

PHP 邮件包

正如我们已经提到的,原生 PHP mail() 函数在批量发送时功能有限。例如,它不是为创建 引人入胜的电子邮件模板 这可能会促进您的下一个活动或发送大量电子邮件。

但是由于 PHP 仍然是其中之一 最流行的编程语言,它也不缺乏发送大量电子邮件的资源。我们强烈推荐几个插件,例如 Pear Mail 和 Swift Mailer

Pear Mail

Pear Mail 是一个为发送电子邮件提供多个接口的类(在他们的文档中有说明)。

以下是您可以使用 Pear Mail 执行的操作:

  • 创建带有附件和内嵌图像的复杂 HTML/文本消息(使用 Mail_Mime 类)
  • 通过 PHP 的内置 mail() 函数、sendmail 程序或 SMTP 服务器发送电子邮件
  • 从队列中发送多封电子邮件(使用 邮件队列 班级)。

Swift Mailer

Swift Mailer 是另一个用 PHP 发送电子邮件的流行包。它功能丰富,被文档很好地覆盖,并且使用起来非常简单。

以下是您可以使用 Swift Mailer 执行的操作:

  • 创建复杂的 HTML/多部分模板
  • 添加附件和嵌入图像
  • 通过经过身份验证的 SMTP、sendmail、Postfix 或您自己的传输方式发送电子邮件
  • 使用额外的插件。

除此之外,Swift Mailer 提供了增强的安全性,并以低内存使用率处理大型附件和图像。

PHPMailer

最后, PHPMailer,这是 PHP 的经典和最流行的电子邮件发送库。它值得单独的文章和教程。你会找到它的 这里.

以下是您可以使用 PHPMailer 执行的操作:

  • 创建复杂的 HTML/多部分模板
  • 添加附件和嵌入图像
  • 通过经过身份验证的 SMTP 发送电子邮件。

PHPMailer 受到保护免受标头注入攻击并自动验证电子邮件。

在本文中,我们描述了基本的 PHP 电子邮件发送原理、语法和参数。此外,我们还回顾了使用 PHP 发送电子邮件的主要方式:其内置的邮件功能和最流行的外部邮件包。PHPMailer 和 Swift Mailer 是当今 PHP 电子邮件发送的标准库,PEAR Mail 仍然被广泛使用。

根据您当前的需求和偏好选择您的选项,并事先测试您的电子邮件。对于电子邮件实验 – 在以下位置创建一个帐户 邮件陷阱,一个假的 SMTP 服务器。它模仿真实的 SMTP 服务器并将您的测试电子邮件捕获在虚拟收件箱中。试试!

检查完整 使用 PHP 发送电子邮件 Mailtrap.io 上的文章以获取有关电子邮件包和示例的更多详细信息!