Nodemailer с Gmail From: адрес не меняется

Я пытаюсь отправить электронные письма любому новому подписчику моего списка рассылки. Все работает отлично, но адрес электронной почты «отправителя» не меняется на «noreplay». Он остается адресом электронной почты, с которым я прошел аутентификацию, в данном случае моей рабочей почтой. Например, если я установил «от» на «noreply@example .com», он отправляет почту с «[email protected]». Это мой код:

if (snapshot.child("subscribed").val() === 'true') {
  var value = snapshot.child("email").val(); //ignore this
  var key = snapshot.key;  //ignore this

  var mailHtml = val.htmlText1 + httpLink + key + val.htmlText2; //ignore this
  let mailOptions = {
   from: '"JaafarsCompany" <[email protected]>', // sender address
   to: value, // list of receivers
   subject: 'Hello', // Subject line
   text: 'Hello world', // plain text body
   html: mailHtml //ignore this
  };

  // send mail with defined transport object
  mailTransport.sendMail(mailOptions, (error, info) => {
   if (error) {
     return console.log(error);
   }
  console.log('Mail sent to: ' + value + '. ' + 'Message %s sent: %s', info.messageId, info.response);
});

Я основывался только на примере из документации. Полученное электронное письмо приходит так, как если бы оно было от «JaafarsCompany», но если вы нажмете на имя отправителя, оно покажет мою рабочую почту.

Надеюсь, это имеет смысл. Я ищу все, что может указать мне в правильном направлении. Такое ощущение, что я уже давно гуглю эту проблему :(


person Jaafar Mahdi    schedule 26.06.2017    source источник
comment
так что ваш приведенный выше код в порядке ... если нет, вы должны опубликовать исправленную версию в своем ответе   -  person Scott Stensland    schedule 27.06.2017
comment
Код в порядке :-)   -  person Jaafar Mahdi    schedule 28.06.2017


Ответы (1)


Я понял, в чем проблема. По сути, док говорит:

Gmail также всегда устанавливает аутентифицированное имя пользователя в качестве адреса электронной почты From:. Таким образом, если вы аутентифицируетесь как [email protected] и устанавливаете [email protected] в качестве адреса from:, тогда Gmail отменяет это и заменяет отправителя аутентифицированным пользователем.

Чтобы обойти эту проблему, необходимо добавить группу в Admin Console. После этого перейдите по этой ссылке и следуйте инструкциям.

Я получил помощь от сторонника Firebase, чтобы решить эту проблему. Надеюсь, это поможет кому-нибудь однажды :-)

person Jaafar Mahdi    schedule 27.06.2017
comment
твой ответ мне не понятен. у меня та же проблема. но в моем случае адрес from динамически меняется в зависимости от электронной почты пользователя, полученной из базы данных. в таком случае, что может быть решением. - person Dilakshan Sooriyanathan; 14.03.2018
comment
Хм, извините, но я не знаю, какое решение может быть. В моем случае from mail был собой, как если бы я отправлял почту человеку, но это было не так, поэтому я хотел изменить его на [email protected] - person Jaafar Mahdi; 14.03.2018
comment
Ваш ответ недействителен на ваш собственный вопрос. Вы не упомянули тот факт, что gmail допускает ограничение до 99 электронных писем. Так что, если есть миллион адресов, с которых отправляются сообщения? - person JKhan; 22.06.2020