使用phpmailer可轻松实现PHP邮件发送。首先通过composer安装库,然后创建实例并配置SMTP信息(如qq邮箱的服务器、端口、授权码),设置发件人、收件人、主题及html内容,最后发送并捕获异常处理结果。需注意使用邮箱授权码而非密码,正确匹配加密方式与端口(ssl-465/TLS-587),设置UTF-8编码防乱码,并规范邮件内容避免被误判为垃圾邮件。封装后可复用。

在PHP开发中,发送电子邮件是一个常见需求,比如用户注册验证、密码找回、通知提醒等。PHP本身提供了mail()函数来发送邮件,但功能有限且容易受服务器配置影响。更推荐使用强大的第三方库——PHPMailer,它支持SMTP认证、附件上传、HTML邮件内容等功能,使用灵活且兼容性好。
安装PHPMailer(推荐使用Composer)
最简单的方式是通过Composer安装PHPMailer:
composer require phpmailer/phpmailer
如果没有使用Composer,也可以从gitHub下载PHPMailer源码并手动引入文件。
基本使用步骤
以下是使用PHPMailer发送邮件的基本流程:
立即学习“PHP免费学习笔记(深入)”;
- 引入PHPMailer类文件
- 创建PHPMailer实例
- 配置SMTP服务器信息(如Gmail、QQ邮箱等)
- 设置发件人、收件人、主题和邮件内容
- 发送邮件并处理结果
示例代码:发送一封HTML格式邮件
以下是一个完整的例子,使用QQ邮箱的SMTP服务发送HTML邮件:
<?php use PHPMailerPHPMailerPHPMailer; use PHPMailerPHPMailerSMTP; require 'vendor/autoload.php'; // 引入自动加载 $mail = new PHPMailer(true); try { // 启用SMTP $mail->isSMTP(); $mail->Host = 'smtp.qq.com'; $mail->SMTPAuth = true; $mail->Username = 'your_email@qq.com'; // 替换为你的邮箱 $mail->Password = 'your_password_or_auth_code'; // 授权码(非登录密码) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; // 设置字符编码 $mail->CharSet = 'UTF-8'; // 发件人 $mail->setFrom('your_email@qq.com', '网站管理员'); // 收件人 $mail->addAddress('recipient@example.com', '用户姓名'); // 可选:添加抄送或密送 // $mail->addCC('cc@example.com'); // $mail->addBCC('bcc@example.com'); // 可选:添加附件 // $mail->addAttachment('/path/to/file.pdf'); // 邮件内容 $mail->isHTML(true); $mail->Subject = '欢迎注册我们的网站!'; $mail->Body = '<h1>欢迎加入</h1><p>感谢您的注册,点击 <a href="https://example.com">这里</a> 激活账户。</p>'; $mail->AltBody = '欢迎加入!请访问 https://example.com 激活账户。'; $mail->send(); echo '邮件已成功发送'; } catch (Exception $e) { echo "邮件发送失败:{$mail->ErrorInfo}"; } ?>
常见问题与注意事项
- 使用授权码而非密码:如QQ邮箱、163邮箱等需要开启SMTP服务,并使用生成的“授权码”作为密码。
- 端口与加密方式匹配:SSL通常用465端口,TLS用587端口,注意配置正确。
- 防止中文乱码:设置$mail->CharSet = ‘UTF-8’。
- 避免被识别为垃圾邮件:设置合理的发件人名称、主题,避免频繁发送。
基本上就这些。PHPMailer让PHP发送邮件变得简单可靠,无论是文本邮件还是带样式和附件的HTML邮件都能轻松应对。合理封装后可作为项目中的通用邮件发送类重复使用。


