PHP邮件发送:PHPMailer、SwiftMailer和mail() — 完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP邮件发送:库和工具概述



邮件发送是任何Web应用程序不可或缺的一部分:用户注册、密码重置、通知、营销活动。在PHP中,有几种实现邮件发送的方法:从内置函数mail()到专门的库,如PHPMailer和SwiftMailer。在本文中,我们将详细分析每个工具、其优缺点,并提供实用的代码示例。



1. 内置函数 mail()



最简单的方法是使用PHP的原生函数mail()。它不需要安装额外的库,但有严重的局限性。



语法

mail($to, $subject, $message, $headers, $parameters);


发送简单文本邮件的示例

<?php$to = 'user@example.com';$subject = '问候';$message = '您好!这是一封测试邮件。';$headers = 'From: noreply@pythonlib.ru' . "\\r" .           'Reply-To: support@pythonlib.ru' . "\\r" .           'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) { echo '邮件已发送。';} else { echo '发送错误。';}?>


mail() 的缺点

  • 依赖于服务器设置(sendmail、postfix等)——经常进入垃圾邮件。
  • 不支持HTML邮件和附件,除非手动构建MIME头。
  • 缺乏SMTP认证支持。
  • 难以调试错误。


由于这些限制,对于严肃的项目,建议使用专门的库。



2. PHPMailer — 最流行的库



PHPMailer 是一个强大且方便的用于在PHP中发送邮件的库。支持HTML、附件、SMTP认证、TLS/SSL加密以及许多其他功能。



安装

composer require phpmailer/phpmailer

或从GitHub手动下载。



通过Gmail SMTP发送HTML邮件的示例

<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try { // 服务器设置 $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'your-email@gmail.com'; $mail->Password = 'your-app-password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;

// 发件人和收件人 $mail->setFrom('from@example.com', '您的姓名'); $mail->addAddress('user@example.com', '收件人');

// 附件 $mail->addAttachment('/path/to/file.pdf', 'document.pdf');

// 内容 $mail->isHTML(true); $mail->Subject = '来自PHPMailer的问候'; $mail->Body = '<h1>标题</h1><p>这是一封<b>HTML</b>邮件。</p>'; $mail->AltBody = '用于不支持HTML的邮件客户端的纯文本版本';

$mail->send(); echo '邮件已发送。';} catch (Exception $e) { echo "错误: {$mail->ErrorInfo}";}?>


PHPMailer 的优点

  • 简单易懂的API。
  • 支持所有现代邮件协议。
  • 自动编码附件。
  • 良好的文档和庞大的社区。


3. SwiftMailer — 灵活的替代方案



SwiftMailer 是另一个流行的库,它提供了一个面向对象的邮件发送接口。与PHPMailer不同,它使用“传输”(Transport)和“消息”(Message)的概念。



安装

composer re                    

推荐