如何实现样式表访问或函数激活时发送邮件通知?
问题解答
一、样式表被访问时触发邮件通知
直接在.css文件里写PHP代码会失效,因为服务器默认不会解析CSS文件中的PHP代码,这就是你遇到异常的原因。要实现这个需求,有两种可行方案:
方案1:将CSS文件改为PHP后缀
把样式文件命名为style.css.php,文件开头先执行邮件脚本,然后输出CSS内容并设置正确的响应头,示例代码:<?php // 触发邮件 mail('email@address.com', 'CSS被访问', '样式表已被客户端请求'); // 设置CSS内容类型头 header('Content-Type: text/css'); ?> /* 这里写你的CSS代码 */ body { background: #fff; }之后在HTML页面里引用这个文件:
<link rel="stylesheet" href="style.css.php">。注意:浏览器会缓存CSS文件,若需要每次访问都触发邮件,可给URL加随机参数(比如style.css.php?v=<?= time() ?>)或在PHP里添加禁用缓存的响应头。方案2:通过页面引用间接触发
若不想修改CSS文件名,可在引用CSS的PHP页面中,当页面加载时(即CSS被请求的时机)执行邮件脚本,但这种方式无法区分是页面加载触发还是CSS单独被访问触发。
二、function激活时发送邮件
完全可以,分两种场景处理:
1. PHP函数激活时触发
直接把mail()函数嵌入自定义PHP函数中,当函数被调用时就会执行邮件发送:
function myTriggerFunction() { // 这里写函数的业务逻辑 // ... // 发送通知邮件 mail('email@address.com', '函数已激活', '自定义函数myTriggerFunction被调用'); } // 调用函数时触发邮件 myTriggerFunction();
2. 前端JavaScript函数激活时触发
前端JS无法直接发送邮件,需要通过AJAX请求后端PHP接口来触发:
- 先写一个
send_mail.php文件:<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { mail('email@address.com', 'JS函数已激活', '前端函数触发了邮件通知'); echo '邮件已发送'; } ?> - 然后在前端JS函数中发起请求:
function jsTriggerFunction() { // 函数业务逻辑 // ... // 发送AJAX请求触发邮件 fetch('send_mail.php', { method: 'POST' }) .then(res => res.text()) .then(msg => console.log(msg)); }
内容的提问来源于stack exchange,提问作者Gonzo
相关产品推荐
相关产品推荐

