登录
首页 >  文章 >  php教程

PHP SMTP发邮件教程及代码示例

时间:2026-04-01 10:10:41 454浏览 收藏

本文详解了如何用PHPMailer替代不稳定的PHP自带mail()函数,通过SMTP协议安全、可靠地发送邮件:从Composer安装PHPMailer、配置QQ邮箱等主流服务商的授权码与TLS/SSL端口(587或465),到提供开箱即用的带异常处理的发送代码,并重点提醒云服务器端口屏蔽、授权码替代密码、环境变量保护敏感信息等实战关键点——掌握这些,你就能避开90%的发信失败陷阱,轻松实现高成功率的邮件功能。

PHP邮件发送功能实现_PHP使用SMTP发送邮件示例

PHP 自带的 mail() 函数依赖本地 sendmail 服务,线上环境常因配置缺失或被屏蔽而失败。更可靠的方式是使用 SMTP 协议直连邮件服务商(如 Gmail、QQ 邮箱、163 邮箱或企业邮箱),配合 PHPMailer 等成熟库实现稳定发信。

安装并引入 PHPMailer

推荐用 Composer 安装最新版 PHPMailer:

  • 运行 composer require phpmailer/phpmailer
  • 在脚本开头加入:
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\SMTP;
    use PHPMailer\PHPMailer\Exception;
  • 记得包含自动加载:require 'vendor/autoload.php';

配置 SMTP 参数(以 QQ 邮箱为例)

QQ 邮箱需开启 SMTP 并获取授权码(非登录密码),端口通常为 587(TLS)或 465(SSL):

  • SMTP 服务器:smtp.qq.com
  • 端口:587(推荐 TLS)或 465(SSL)
  • 用户名:完整邮箱地址(如 user@qq.com)
  • 密码:QQ 邮箱设置中生成的“SMTP 授权码”
  • 发件人名称:可自定义,如 “技术支持”

发送邮件的最小可用代码

以下是一个简洁、带错误提示的发送示例:

$mail = new PHPMailer(true);
try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.qq.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your@qq.com';
    $mail->Password   = 'your_app_password'; // 授权码,非邮箱密码
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    $mail->setFrom('your@qq.com', '技术支持');
    $mail->addAddress('to@example.com', '收件人姓名');
    $mail->isHTML(true);
    $mail->Subject = '测试邮件';
    $mail->Body    = '<h2>这是一封 HTML 邮件</h2><p>支持样式和链接</p>';

    $mail->send();
    echo '邮件已发送';
} catch (Exception $e) {
    echo "发送失败: {$mail->ErrorInfo}";
}

常见问题与注意事项

避免踩坑,注意这些细节:

  • 国内云服务器(如阿里云、腾讯云)默认屏蔽 25 端口,务必改用 465 或 587
  • Gmail 需开启“两步验证”后生成应用专用密码;163/QQ 邮箱需在网页端手动开启 SMTP 并复制授权码
  • 收件人地址必须调用 addAddress() 显式添加,不能只写在 Body 里
  • 若报错 “Could not connect to SMTP host”,先 telnet 测试端口连通性:telnet smtp.qq.com 587
  • 生产环境建议封装成函数或服务类,敏感配置(账号密码)从环境变量读取

基本上就这些。不复杂但容易忽略授权码和端口限制,配对正确后发送成功率很高。

好了,本文到此结束,带大家了解了《PHP SMTP发邮件教程及代码示例》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>