Loopback Email Connector не отправляет электронные письма - PullRequest
8 голосов
/ 23 мая 2019

У меня есть Loopback-приложение с REST API.

Я хочу создать REST API Enpoint / Email / sendEmail, который отправляет электронную почту.Я сделал этот урок: https://loopback.io/doc/en/lb3/Email-connector.html,, но он как-то не работает для меня.

Когда я открываю https://localhost:3000/explorer, я вижу конечную точку API и могу нажать кнопку «Попробуйте»из".Но потом он просто загружается вечно, и через некоторое время в консоли появляется ошибка Timeout.

Файл: datasource.json

{
  "db": {
    "host": "localhost",
    "port": 27017,
    "url": "",
    "database": "siemens",
    "password": "",
    "name": "db",
    "user": "",
    "useNewUrlParser": true,
    "connector": "mongodb"
  },
  "email": {
    "name": "email",
    "connector": "mail",
    "transports": [{
      "type": "SMTP",
      "host": "smtp.gmail.com",
      "secure": true,
      "port": 465,
      "auth": {
        "user": "xbit.dany@gmail.com",
        "pass": "XXX"
      }
    }]
  }
}

Файл: model-config.json

"Email": {
    "dataSource": "email",
    "public": true
  }

Файл: email.js

module.exports = function(Email) {

  // send an email
  Email.sendEmail = function(cb) {
    console.log("Sending Email");
    Email.app.models.Email.send({
      to: 'siemens.dany@gmail.com',
      from: 'xbit.dany@gmail.com',
      subject: 'my subject',
      text: 'my text',
      html: 'my <em>html</em>'
    }, function(err, mail) {
      console.log('email sent!');
      cb(err);
    });
  }

  Email.remoteMethod(
    'sendEmail', {
      http: {
        path: '/sendEmail',
        verb: 'get'
      },
      returns: {

      }
    }
  );

};

Файл: models / email.json

{
    "name": "Email",
    "base": "Model",
    "properties": {
      "to": {"type": "String", "required": true},
      "from": {"type": "String", "required": true},
      "subject": {"type": "String", "required": true},
      "text": {"type": "String"},
      "html": {"type": "String"}
    }
}

1 Ответ

1 голос
/ 28 мая 2019

почта сейчас работает.Это код email.js

module.exports = function(emailDS) {

  // send an email
  emailDS.sendEmail = function(cb) {
    console.log("Sending Email");

    emailDS.app.models.Email.send({
      to: 'siemens.dany@gmail.com',
      from: 'xbit.dany@gmail.com',
      subject: 'my subject',
      html: 'my <em>html</em>'
    }, function(err, mail) {
      console.log("Mail: " + mail);
      console.log("Error: " + err);
      cb(null, mail);
    });
  }

  emailDS.remoteMethod(
    'sendEmail', {
      http: {
        path: '/sendEmail',
        verb: 'get'
      },
      returns: {
        arg: 'Status', type:'string'
      }
    }
  );

};
...