如何在 javascript 中发送预定的电子邮件?

How to send scheduled email in javascript?

我正在使用 SMTPJS 通过 Gmail SMTP 发送电子邮件。这是我的简单工作代码:

<script src="https://smtpjs.com/v2/smtp.js"></script>

sendEmail(to, subject, body){ 
    Email.send(
        "SITENAME noti.sitename@gmail.com", //from
        to, //to
        subject, //subject
        body,   //body
        "smtp.gmail.com", //smtp host
        "noti.sitename@gmail.com", //username account
        "Noti-Password",    //password account
        message=>{
            alert("sent");
        }
    )
}

我需要做的是发送一封按日期发送的电子邮件。例如 2 周后或 30 天后。那么是否可以通过添加一些行或做其他方式来实现?

我认为仅 JavaScript 是不可能的 为此,您需要在特定时间打开浏览器,它可以从服务器端进行管理,但就我对客户端的关注而言,它可以通过仅限必须嵌入到客户端浏览器中的扩展。您可以在特定时间使用后台或 cantent 脚本发送消息

您不能在前端执行此操作,因为浏览器上的 JavaScript 仅在站点打开时执行。

要做到这一点,您需要一台服务器每隔 X 次 运行 一个代码,这就是一个 cron。 该代码可以用 Python、JavaScript (Node.js) o PHP.

等语言编写

如果您可以在网站上托管它,您可能也可以 运行 PHP 所以我建议您使用 PHP。你会这样做:

  1. 在您的 HTML use a Form to send the content of the email via POST 到 PHP 文件。

  2. 上传一个 PHP 文件,该文件读取 POST parameters and saves a file(例如 JSON),对于每封电子邮件,其中包含:应该发送的时间戳以及邮件内容。

  3. 上传一个 PHP 文件,该文件读取具有过去时间戳的 "pending emails to send" 文件和 sends the emails 并从文件中删除该邮件。

  4. 设置一个 cron,每天早上 8 点 运行 发送第二个 PHP 文件。