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

app.post('/api/v1/contact', (req, res) => {
  var data = req.body;

  var smtpTransport = nodemailer.createTransport({
    service: 'Gmail',
    port: 465,
    auth: {
      user: '',
      pass: ''
    }
  });

  var mailOptions = {
    from: data.email,
    to: 'myemail@domain.com',
    subject: data.title,
    html: `<p>${data.email}</p>
          <p>${data.message}</p>`, 

...
...

Data.email внутри HTML-тега внутри тела письма правильно показывает электронную почту отправителя, а в поле from тот же data.email показывает мой собственный адрес электронной почты. Похоже, я отправляю мне электронное письмо. В чем проблема?

0
NewTech Lover 12 Окт 2019 в 19:15

2 ответа

Это не ошибка. У вас просто нет доступа для отправки электронных писем с другого адреса электронной почты.

0
Andrei Panturu 12 Окт 2019 в 19:23
Это контактная форма, в которую человек отправляет электронное письмо со своим адресом электронной почты. Тогда как я узнаю отправителя ответа? Даже WordPress позволяет такое.
 – 
NewTech Lover
12 Окт 2019 в 19:26
Я понимаю вашу проблему, но это невозможно по простой причине: представьте, что вы вводите адрес электронной почты очень важного лица / компании как «от», а затем используете его для некоторых мошенничеств. Вы можете указать адрес электронной почты в теме и вместо ответа просто отправить еще одно письмо на этот адрес в качестве ответа. Я не знаю, есть ли другое решение для этого (возможно, есть), я только что сказал вам, почему это не работает в вашем конкретном случае.
 – 
Andrei Panturu
12 Окт 2019 в 19:33

Назначение контактной формы на любом веб-сайте - общение клиента с владельцем сайта.

Вы не можете заставить клиента отправлять электронную почту, используя страницу контактов. Вы можете ответить на его электронную почту.

Поэтому я предлагаю вам указать адрес электронной почты клиента, который вы получаете, в параметре req.body.email, чтобы вы могли узнать, кто пытается связаться.

Лучше указать адрес электронной почты администратора / службы поддержки веб-сайта в

auth: {
      user: '',
      pass: ''
    }

Атрибут пользователя и пароль для него же в атрибуте pass.

Это не проблема nodemailer.

0
Prabal 12 Окт 2019 в 23:18