Как отправить электронное письмо с помощью формы HTML и отправить его с помощью Node.js и Gulp? - PullRequest
0 голосов
/ 02 сентября 2018

Сегодня я работаю над очень простой HTML-контактной формой, которая должна иметь возможность отправлять электронную почту, используя Node.js и Gulp, но я не могу найти способ заставить эту работу. Относительный путь к простому файлу .PHP - неправильный путь, и он, вероятно, должен быть через HTTP-запрос, но, честно говоря,

Я не знаю, как это сделать с Gulp. Как я могу отправить данные формы из HTML в задачу Gulp? Или мне нужно сначала использовать JavaScript, чтобы перехватить отправку формы?

См. HTML-код ниже:

                        <form action="What needs to be here now?" method="POST">
                        <h3 class="title is-4 has-text-centered">Uw onderneming aanmelden</h3>
                        <div class="control-material is-secondary">      
                            <input class="material-input" type="text" required>
                            <span class="material-highlight"></span>
                            <span class="bar"></span>
                            <label>Name *</label>
                        </div>
                        <div class="control-material is-secondary">      
                            <input class="material-input" type="text" required>
                            <span class="material-highlight"></span>
                            <span class="bar"></span>
                            <label>Company name *</label>
                        </div>
                        <div class="control-material is-secondary">      
                            <input class="material-input" type="text" required>
                            <span class="material-highlight"></span>
                            <span class="bar"></span>
                            <label>Phone *</label>
                        </div>
                        <div class="control-material is-secondary">      
                            <input id="email" name="email" class="material-input" type="text" required>
                            <span class="material-highlight"></span>
                            <span class="bar"></span>
                            <label>E-mail *</label>
                        </div>
                        <div class="submit-wrapper">
                            <button type="submit" class="button button-cta is-bold is-fullwidth btn-align primary-btn raised no-lh">
                                Join
                            </button >
                        </div>

1 Ответ

0 голосов
/ 03 сентября 2018

Ваша стратегия будет зависеть от того, хотите ли вы, чтобы форма вызывала электронную почту на стороне клиента, без какого-либо взаимодействия с сервером; или вы хотите, чтобы форма была отправлена ​​на сервер, а затем чтобы сервер отправил электронное письмо.

Только на стороне клиента:

Ваша кнопка «Присоединиться» может вызвать функцию JavaScript, которая предотвращает отправку формы по умолчанию, вместо этого извлекает записи формы и генерирует комплексный mailto: адрес:

function sendEmail() {
  // Write some code that gets form entries
  window.location.href = 'mailto:' + address + '?subject=' + ...;
}

(Есть множество веб-ресурсов для изучения сложных mailto: адресов.) Это приведет к открытию предпочтительного почтового клиента пользователя и заполнит электронное письмо содержимым, которое вы указано. Пользователь нажимает «Отправить» в своем клиенте, и электронное письмо отправляется без какого-либо участия вашего сервера.

Управление на стороне сервера:

Существует множество способов сделать это, но первым простым способом является использование пакета Node.js, например Nodemailer . Настройте сервер для получения данных многочастной формы через маршрут запроса POST, а затем попросите сервер преобразовать эти данные в содержимое почты в команду Nodemailer transporter.sendMail. В отличие от случая на стороне клиента, вам необходимо настроить выделенную учетную запись отправителя электронной почты - либо на вашем собственном smtp сервере, либо в службе, подобной gmail - для использования вашим сервером.

С другой стороны, если вы хотите, чтобы ваш сервер просто выступал в качестве посредника, а не отправлял свои собственные электронные письма, вы можете зарегистрироваться с помощью API электронной почты, такого как SendGrid, Mailgun и т. Д. Затем ваш сервер получит доступ к своему API с данными, отправленными на ваш сервер. POST, и они отправят электронное письмо.

...