You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku平台使用PHP通过Gmail发送注册确认邮件

Heroku PHP环境使用Gmail发送邮件的实现方案

你本地已经跑通的PHPMailer代码不需要做大幅改动,仅需要调整Gmail账号安全配置和Heroku的环境变量配置即可实现,不需要适配Ruby相关方案。

1. Gmail账号安全配置

Heroku的服务器IP不属于你本地常用登录区域,直接用原账号密码会被Google的安全策略拦截,需要做如下调整:

  • 优先使用Google应用专用密码(安全性更高,推荐):
    • 先为你的Google账号开启两步验证
    • 进入Google账号「安全性」设置页,找到「应用专用密码」入口
    • 生成一个专属Heroku应用使用的16位应用专用密码,后续PHPMailer的SMTP密码字段填这个生成的密码即可,不需要用你原账号的登录密码
  • 若未开启两步验证,可以临时开启「不太安全的应用访问权限」,但该方式安全性极低,仅建议测试阶段临时使用

2. Heroku环境变量配置

不要在代码中硬编码邮箱账号和密码,避免敏感信息泄露,通过Heroku的配置变量存储敏感信息:

  • 进入你的Heroku应用后台,打开「设置」页面找到「配置变量」板块,新增两个变量:
    • GMAIL_USER:你的Gmail完整邮箱地址
    • GMAIL_APP_PWD:上一步生成的16位应用专用密码
  • 也可以通过Heroku CLI快速配置:
    heroku config:set GMAIL_USER=你的Gmail地址 GMAIL_APP_PWD=你的应用专用密码 -a 你的Heroku应用名称

3. PHPMailer代码示例

代码逻辑和你本地使用的逻辑基本一致,仅需要替换为从环境变量读取账号密码即可:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// 确保你已经通过composer安装了phpmailer依赖
require 'vendor/autoload.php';

$mail = new PHPMailer(true);
try {
    // SMTP服务器基础配置
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    // 从Heroku环境变量读取敏感信息
    $mail->Username = getenv('GMAIL_USER');
    $mail->Password = getenv('GMAIL_APP_PWD');
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port = 465;

    // 邮件内容、收件人配置和本地逻辑一致即可
    $mail->setFrom(getenv('GMAIL_USER'), '你的站点名称');
    $mail->addAddress('收件人邮箱地址');
    $mail->isHTML(true);
    $mail->Subject = '账号注册确认';
    $mail->Body    = '这是你的注册确认邮件内容';

    $mail->send();
    echo '邮件发送成功';
} catch (Exception $e) {
    echo "邮件发送失败,错误信息:{$mail->ErrorInfo}";
}

注意:个人Gmail账号的SMTP发送量有明确限制,每天最多发送500封邮件,若你的站点用户量较大,建议切换到专业的邮件发送服务,Heroku也提供对应附加组件可直接开通使用。

内容的提问来源于stack exchange,提问作者Dragos Polifronie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:06:05