Как отправить запланированное электронное письмо на javascript?

Я использую SMTPJS для отправки писем через Gmail SMTP. Вот мой простой рабочий код:

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

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

Что мне нужно сделать, так это отправить электронное письмо, которое должно быть отправлено по дате. Например, через 2 недели или через 30 дней. Возможно ли это, добавив несколько строк или сделав другой способ?

Вы можете запустить cron на сервере и использовать node.js - на веб-странице страница должна быть открыта во время отправки

mplungjan 16.12.2018 18:30

Я не думаю, что это возможно в интерфейсе веб-сайта, это потребует от человека держать страницу открытой в течение определенного времени, чтобы отправить электронное письмо. Как только вы закрываете страницу, скрипт останавливается. Я считаю, что вам нужно будет сделать это на внутреннем сервере.

Carson 16.12.2018 18:30

Вы должны переключиться либо на node.js, либо на другой язык программирования, который вы можете оставить открытым / клиенту не нужно его запускать.

Maxim Khanov 16.12.2018 18:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
1 968
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что это невозможно только с JavaScript.Для этого вам нужно открыть свой браузер на это конкретное время, им можно управлять со стороны сервера, но, насколько я понимаю, с клиентской стороны, это можно сделать только с расширением, которое должно быть встроено в клиентский браузер. . Вы можете использовать фоновый сценарий или скрипт Cantent для отправки сообщения в определенное время.

Ответ принят как подходящий

Вы не можете сделать это во внешнем интерфейсе, потому что JavaScript в браузере выполняется только во время открытия сайта.

Для этого вам понадобится сервер для запуска кода каждый раз X, это cron. Этот код может быть написан на таких языках, как Python, JavaScript (Node.js) или PHP.

Если вы можете разместить это на веб-сайте, вы, вероятно, также сможете запустить PHP, поэтому я рекомендую вам использовать PHP. Вот как бы вы это сделали:

  1. В вашем HTML использовать форму для отправки содержимого электронного письма через POST в файл PHP.

  2. Загрузите файл PHP, который читает Параметры POST и сохраняет файл (например, JSON), который содержит для каждого сообщения электронной почты: метку времени, в которой следует отправить, и содержимое электронной почты.

  3. Загрузите файл PHP, который читает файл «ожидающих отправки писем» и отправляет электронные письма, имеющий прошедшую временную метку, и удаляет это письмо из файла.

  4. Настройте cron, который запускает второй файл PHP каждый день в 8 утра.

Другие вопросы по теме