为了账号安全,请及时绑定邮箱和手机立即绑定

我想从某个时间点发送电子邮件

我想从某个时间点发送电子邮件

慕容森 2022-12-02 15:48:57
我为一家向客户销售维护包(以小时为单位)的公司做秒表。每个客户在他的包中都有一个定义的时间。当员工为客户工作时,他启动秒表,完成后将完成的任务(包括完成日期、评论和以分钟为单位的时间)发送到数据库中。我还被要求在包中剩余时间达到 1 小时时自动向项目经理发送电子邮件。我用 JavaScript 制作了秒表,并将其集成到 PHP 代码中。我分配了一个“标志”,允许确定何时发送有问题的邮件(合同时间 - 秒表时间)。但是,我在使用 document.getElementById("flag").innerHTML 时遇到的问题是标志值的变化只出现 1 秒。因为我想通过 mail() 函数在 php 中发送邮件,所以我需要在标志设置为 true 时保存此值,并将其作为 POST 方法传输,以便稍后能够发送邮件。这是秒表的部分代码:// Calcul de temps du chronomètre (en secondes)function envoyerAudio(minutes,heures,secondes){minAlarm = parseInt(minutes);hrAlarm  = parseInt(heures);secAlarm = parseInt(secondes);flagAudio = true;    if (hrAlarm!= 00) {        minAlarm = minAlarm + (hrAlarm * 60);    }    if (minAlarm != 00){        secAlarm = secAlarm + (minAlarm * 60);    }return secAlarm;}var resultat = ((tempsRestant * 60) - (envoyerAudio(min,hr,sec)));// Gestion des alarmes if(resultat == 3600){    audio.play();    // Permet, lorsque flagAlert="true", d'envoyer un mail au chargé de projet    document.getElementById("flagAlert").innerHTML = "true";} else{    document.getElementById("flagAlert").innerHTML = "false";   }if(resultat == 0){    audio.play();   }if(resultat == -3000){    audio.play();    alert ("Arrêtez la tâche en cours !!");}你对我如何实现我想要的有什么想法吗?
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

notifyProjectManager.php这应该向$_GET变量中包含您需要的值发送请求。您可以更改var paramsKeys以添加更多键。


// Calcul de temps du chronomètre (en secondes)

function envoyerAudio(minutes, heures, secondes) {

    minAlarm = parseInt(minutes);

    hrAlarm = parseInt(heures);

    secAlarm = parseInt(secondes);

    flagAudio = true;

    if (hrAlarm != 00) {

        minAlarm = minAlarm + (hrAlarm * 60);

    }

    if (minAlarm != 00) {

        secAlarm = secAlarm + (minAlarm * 60);

    }

    return secAlarm;

}


var resultat = ((tempsRestant * 60) - (envoyerAudio(min, hr, sec)));


// Gestion des alarmes 

if (resultat == 3600) {

    audio.play();

}


if (resultat < 3600) {


    if (!!window.notifyProjectManager) {

        var params = [];

        var paramsKeys = ['user', 'temps', 'iduser', 'affichage', 'chargeProjet'];

        for (var i in paramsKeys) {

            var key = paramsKeys[i];

            params.push(key + '=' + getByNameValue(key));

        }


        get('notifyProjectManager.php?' + params.join('&'), function () {

            window.notifyProjectManager = true;

        });


        // Permet, lorsque flagAlert="true", d'envoyer un mail au chargé de projet

        document.getElementById("flagAlert").innerHTML = "true";

    }

} else {

    document.getElementById("flagAlert").innerHTML = "false";

}


// get request (working in all browsers)

function get(url, callback) {

    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function () {

        if (xhr.readyState === 4) {

            if (xhr.status === 200) {

                callback(xhr.responseText);

            }

        }

    };

    xhr.open('GET', url);

    xhr.send(null);

}


function getByNameValue(name) {

    return encodeURIComponent(document.getElementsByName(name)[0].value);

}


if (resultat == 0) {

    audio.play();

}

if (resultat == -3000) {

    audio.play();

    alert("Arrêtez la tâche en cours !!");

}


查看完整回答
反对 回复 2022-12-02
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我看不到你的超时/间隔函数在哪里,所以我不能更具体......但基本上你可以在计时器到期时在该函数中设置一个标志,然后在相同或下一个勾号。

现在,如果您需要发送电子邮件。在 X 时间点,无论浏览器是否打开,您都可以在服务器上使用 Cron。


查看完整回答
反对 回复 2022-12-02
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信