Node-imap отправляет электронные письма, но не сохраняет их в Sent

В последнее время я использую node-imap и пытаюсь реализовать отправку электронных писем. Вот код на перьях / узлах:

  create(data, params) {

    return new Promise((resolve, reject) => {


      // create reusable transporter object using the default SMTP transport
      let transporter = nodemailer.createTransport({
        host: this.host,
        port: this.smtpPort,
        secure: false, // true for 465, false for other ports,
        tls: {
          rejectUnauthorized: false
        },
        auth: {
          user: this.emailUsername, // generated ethereal user
          pass: this.emailPassword // generated ethereal password
        }
      });

      // setup email data with unicode symbols
      let mailOptions = {
        from: this.emailUsername, // sender address
        to: data.to, // list of receivers
        subject: data.subject, // Subject line
        text: data.body, // plain text body
        html: data.body // html body
      };

      // send mail with defined transport object
      transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
          reject(error);
          //console.log(error);
        }
        //console.log('Message sent: %s', info.messageId);
        return resolve(info);
      });

    });
  }

этот код работает нормально и отправляет электронную почту, как и должно, но после того, как он выполняет свою работу, я не могу найти эти электронные письма в поле "Отправлено"... кто-нибудь сталкивался с node-imap, что я пропустил? Приветствия.

РЕДАКТИРОВАТЬ:: Только что понял, что он сохраняет для некоторых поставщиков электронной почты (Gmail, Hotmail), но для некоторых других это не так. Так что, я думаю, я ничего не пропускаю... но как я могу сохранить это вручную для других провайдеров, которые не делают это автоматически.

1 ответ

Решение

Кажется, проблема заключалась в том, что провайдер электронной почты стал причиной того, что этот код прекрасно работает для Gmail или Hotmail... поэтому я вручную добавил письмо в поле "Отправлено" после того, как оно уже было отправлено для этого определенного провайдера электронной почты… вот код, если таковой имеется1 необходимо:

        // send mail with defined transport object
        transporter.sendMail(mailOptions, (error, info) => {
          if (error) {
            reject(error);
            //console.log(error);
          }

          if (checkEmail(userEmail) == 'linksoft') {
            imap.once('ready', function () {
              imap.openBox('inbox.Sent', false, (err, box) => {
                if (err) throw err;

                let msg, htmlEntity, plainEntity;
                msg = mimemessage.factory({
                  contentType: 'multipart/alternate',
                  body: []
                });
                htmlEntity = mimemessage.factory({
                  contentType: 'text/html;charset=utf-8',
                  body: mailOptions.html
                });
                plainEntity = mimemessage.factory({
                  body: mailOptions.text
                });
                msg.header('Message-ID', '<1234qwerty>');
                msg.header('From', mailOptions.from);
                msg.header('To', mailOptions.to);
                msg.header('Subject', mailOptions.subject);
                msg.header('Date', new Date()));
                //msg.body.push(htmlEntity);
                msg.body.push(plainEntity);

                imap.append(msg.toString());

              })
            });

            imap.once('error', function (err) {
              reject(err);
            });

            imap.once('end', function () {
              resolve(response);
            });

            imap.connect();
          }
          //console.log('Message sent: %s', info.messageId);
          return resolve(info);
        });

Зависимость: модуль mimemessage, который используется для генерации сообщения MIME перед сохранением его в поле "Отправленные", поскольку тип сообщения MIME требуется для imap.append()

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