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

通过JavaScript触发发送PHP变量至邮箱的PHP代码问题求助

没问题,我帮你搞定这个PHP邮件发送的问题,结合你的需求,整理出完整可运行的代码方案,分后端PHP和前端JS两部分来说:

实现JavaScript触发PHP发送指定变量到邮箱的解决方案

PHP 后端邮件发送脚本

首先确保你已经通过Composer正确安装了PHPMailer(如果没装,执行composer require phpmailer/phpmailer即可),然后补全并修正你的代码,把指定变量整合到邮件内容里:

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

// 引入PHPMailer自动加载文件(路径根据你的Composer安装位置调整)
require 'vendor/autoload.php';

// 接收前端传来的目标变量(这里假设你要发送name、contact、message三个变量,可按需修改)
$name = $_POST['name'] ?? '';
$contact = $_POST['contact'] ?? '';
$message = $_POST['message'] ?? '';

// 先做基础的非空验证,避免无效发送
if(empty($name) || empty($contact) || empty($message)){
    echo json_encode(['status' => 'error', 'msg' => '必填变量不能为空']);
    exit;
}

try {
    $mail = new PHPMailer(true); // 启用异常处理,方便捕获错误

    // SMTP核心配置(根据你的邮箱服务商调整,比如QQ/163/Gmail)
    $mail->isSMTP();
    $mail->CharSet = 'UTF-8';
    $mail->SMTPDebug = 0; // 生产环境设为0,调试时可改为2看详细日志
    $mail->Debugoutput = 'html';
    $mail->Host = 'smtp.example.com'; // 你的SMTP服务器地址,比如smtp.qq.com
    $mail->SMTPAuth = true;
    $mail->Username = 'your-email@example.com'; // 发件邮箱账号
    $mail->Password = 'your-auth-code'; // 邮箱授权码(不是登录密码,比如QQ邮箱需在设置里开启SMTP并获取)
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 加密方式,ssl或tls
    $mail->Port = 465; // 对应ssl的端口是465,tls是587

    // 收件人与发件人设置
    $mail->setFrom('your-email@example.com', '你的网站名称');
    $mail->addAddress('target-email@example.com', '目标收件人'); // 你要发送到的邮箱

    // 邮件内容:把变量插入到HTML和纯文本版本中
    $mail->isHTML(true);
    $mail->Subject = '收到新的提交信息';
    $mail->Body    = "
        <h3>用户提交的信息</h3>
        <p>姓名:{$name}</p>
        <p>联系方式:{$contact}</p>
        <p>留言内容:<br>{$message}</p>
    ";
    $mail->AltBody = "用户提交的信息\n姓名:{$name}\n联系方式:{$contact}\n留言内容:{$message}"; // 纯文本备用,适配不支持HTML的邮箱

    $mail->send();
    echo json_encode(['status' => 'success', 'msg' => '邮件发送成功']);
} catch (Exception $e) {
    echo json_encode(['status' => 'error', 'msg' => "邮件发送失败:{$mail->ErrorInfo}"]);
}
?>

JavaScript 前端触发代码

你可以用原生JS的fetch或者jQuery的ajax来触发请求,把变量传给PHP脚本:

原生JS版本

// 定义发送邮件的函数
const triggerSendMail = () => {
    // 这里模拟获取你要发送的变量,实际项目中可以从表单输入、页面数据中获取
    const name = document.getElementById('username').value;
    const contact = document.getElementById('usercontact').value;
    const message = document.getElementById('usermessage').value;

    // 发送POST请求到PHP脚本
    fetch('send-mail.php', { // 替换成你的PHP脚本路径
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `name=${encodeURIComponent(name)}&contact=${encodeURIComponent(contact)}&message=${encodeURIComponent(message)}`
    })
    .then(response => response.json())
    .then(data => {
        if(data.status === 'success'){
            alert('邮件已成功发送!');
        } else {
            alert('发送失败:' + data.msg);
        }
    })
    .catch(error => {
        console.error('请求出错:', error);
        alert('请求失败,请稍后重试');
    });
};

// 绑定触发事件,比如点击按钮时执行
document.getElementById('send-btn').addEventListener('click', triggerSendMail);

jQuery版本(如果项目已引入jQuery)

$('#send-btn').click(function(){
    const name = $('#username').val();
    const contact = $('#usercontact').val();
    const message = $('#usermessage').val();

    $.ajax({
        url: 'send-mail.php',
        type: 'POST',
        data: {
            name: name,
            contact: contact,
            message: message
        },
        dataType: 'json',
        success: function(data){
            if(data.status === 'success'){
                alert('邮件已成功发送!');
            } else {
                alert('发送失败:' + data.msg);
            }
        },
        error: function(){
            alert('请求失败,请稍后重试');
        }
    });
});

关键注意事项

  • SMTP配置核对:不同邮箱的SMTP参数不一样,比如QQ邮箱的Host是smtp.qq.com,端口465,需要先在邮箱设置里开启SMTP服务并获取授权码。
  • 安全防护:对前端传来的变量要做过滤(比如用htmlspecialchars转义),避免XSS注入;不要把SMTP密码硬编码在代码里,建议用环境变量存储。
  • 跨域处理:如果JS和PHP不在同一域名下,需要在PHP脚本开头添加跨域头:header("Access-Control-Allow-Origin: 你的前端域名");,生产环境不要用*通配符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:14