Session.send()不起作用:“未定义会话”

时间:2018-11-30 23:27:39

标签: javascript node.js nodemailer web-development-server

我正在尝试使用session.send中的console.log而不是transporter.sendMail,以便用户知道电子邮件发送成功的时间,但是它不起作用。
错误是“未定义会话”。
这是我的代码的样子:

var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Gmail
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: 'myemail@gmail.com',
        pass: 'myPassword'
    }
});

// setup e-mail data
var mailOptions = {
    from: '"Our Code World " <myemail@gmail.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info,session){
    if(error){

        return console.log(error);
    }

    session.send('Message sent: ' + info.response);
}
);

3 个答案:

答案 0 :(得分:1)

transporter.sendMail(mailOptions, function(error, info , session)

您没有使用正确的函数定义,因为transport.SendMail的回调只能有两个参数(错误和信息)。看看Nodemailer example

在您的情况下,它看起来像这样。只需确保使用session上下文可用的代码段即可。

transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
        return session.error(error);
    }

    session.send('Message sent: ' + info.messageId);
});

答案 1 :(得分:1)

这是如何执行此操作的示例。只需确保在会话上下文中调用此方法即可,例如:

const sendmail = require('./email'); // in case you have the class called email

bot.dialog('/', function(session) {


sendmail.sendmail(session);


session.send("hello")

});

function sendmail(session){

  var nodemailer = require('nodemailer');

  // Create the transporter with the required configuration for Outlook
  // change the user and pass !
  var transport = nodemailer.createTransport( {
      service: "hotmail",
      auth: {
          user: "",
          pass: ""
      }
  });

  // setup e-mail data, even with unicode symbols
  var mailOptions = {
      from: '"Our Code World " <shindar902009@hotmail.com>', // sender address (who sends)
      to: 'shindar902009@hotmail.com', // list of receivers (who receives)
      subject: 'Hello ', // Subject line
      text: 'Hello world ', // plaintext body
      html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
  };

  // send mail with defined transport object
  transport.sendMail(mailOptions, function(error, info){
      if(error){
          return console.log(error);
      }

      session.send('Message sent');

  });


}
module.exports.sendmail = sendmail;

答案 2 :(得分:0)

我只是运行了此代码段,并正确地替换了用户名和密码,最后得到的是:

<!DOCTYPE html>

我还收到了Google的电子邮件:

{ Error: Invalid login: 534-5.7.14 <https://accounts.google.com/signin/continu> Please log in via
534-5.7.14 your web browser and then try again.
534-5.7.14  Learn more at
534 5.7.14  https://support.google.com/mail/answer/ - gsmtp
    at SMTPConnection._formatError (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:605:19)
    at SMTPConnection._actionAUTHComplete (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:1340:34)
    at SMTPConnection._responseActions.push.str (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:378:26)
    at SMTPConnection._processResponse (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:764:20)
    at SMTPConnection._onData (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:570:14)
    at TLSSocket._socket.on.chunk (C:\projects\nodemailertest\node_modules\nodemailer\lib\smtp-connection\index.js:522:47)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at TLSSocket.Readable.push (_stream_readable.js:134:10)
  code: 'EAUTH',
  response: '534-5.7.14 <https://accounts.google.com/signin/continue?..._sniped> Please log in via\n534-5.7.14 your web browser and then try again.\n534-5.7.14  Learn more at\n534 5.7.14  https://support.google.com/mail/answer/78 - gsmtp',
  responseCode: 534,
  command: 'AUTH PLAIN' }

您确定这是您正在运行的代码吗?您发布的错误“未定义会话”似乎是语法错误。