PHPMailer库:使用PHP进行专业电子邮件发送
发送电子邮件是任何现代Web应用程序的关键功能之一。PHP内置函数mail()通常不够灵活和安全:它不支持SMTP认证、TLS/SSL加密、发送带附件的HTML邮件,并且在共享主机上有时无法正常工作。解决这些问题的方法是使用PHPMailer库,它已成为PHP发送电子邮件的事实标准。
什么是PHPMailer?
PHPMailer是一个功能强大且易于使用的库,用于从PHP脚本发送电子邮件。它支持:
- 通过SMTP服务器发送(Gmail、Yandex、Mail.ru、企业邮箱);
- TLS和SSL加密;
- 带附件的HTML邮件(图片、PDF、文档);
- UTF-8编码,支持任何语言(中文、俄语等);
- 为不支持HTML的邮件客户端提供纯文本替代内容;
- DKIM和SPF签名以防止垃圾邮件;
- 通过本地sendmail或内置mail()作为后备方案工作。
安装PHPMailer
最简单的方法是通过Composer。在终端中,在项目根目录下执行以下命令:
composer require phpmailer/phpmailer如果不使用Composer,可以从GitHub下载压缩包并手动引入文件:
require_once '/路径/到/PHPMailer/src/PHPMailer.php';require_once '/路径/到/PHPMailer/src/SMTP.php';require_once '/路径/到/PHPMailer/src/Exception.php';通过Gmail SMTP发送邮件的基本示例
我们来看一个通过Gmail SMTP服务器发送邮件的最小配置。注意:您需要在Google账户设置中创建一个应用密码(或使用安全性较低的“允许不够安全的应用程序”选项)。
<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\SMTP;use PHPMailer\\PHPMailer\\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try { // 服务器设置 $mail->SMTPDebug = SMTP::DEBUG_OFF; // 调试模式(0 - 关闭,2 - 详细) $mail->isSMTP(); // 使用SMTP $mail->Host = 'smtp.gmail.com'; // SMTP服务器 $mail->SMTPAuth = true; // 启用认证 $mail->Username = 'your-email@gmail.com'; // SMTP用户名 $mail->Password = 'your-app-password'; // SMTP密码(应用密码) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL $mail->Port = 465; // SSL端口(TLS使用587)
// 发件人和收件人 $mail->setFrom('from@example.com', '发件人姓名'); $mail->addAddress('to@example.com', '收件人姓名'); // 可以添加多个 $mail->addReplyTo('reply@example.com', '回复地址');
// 附件(可选) $mail->addAttachment('/路径/到/文件.pdf', '文件名.pdf');
// 邮件内容 $mail->isHTML(true); // HTML格式 $mail->Subject = '来自PHPMailer的问候!'; $mail->Body = '<b>这是一封HTML邮件</b>,包含中文文本。'; $mail->AltBody = '这是为不支持HTML的邮件客户端提供的替代文本。';
$mail->send(); echo '邮件发送成功';} catch (Exception $e) { echo "错误:{$mail->ErrorInfo}";}?>通过Yandex邮箱发送
对于Yandex邮箱,参数变化不大。重要提示:需要在邮箱设置中允许通过IMAP/SMTP协议访问,并创建应用密码(如果启用了两步验证)。
$mail