最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用NodeJ创建邮件服务

IT培训 admin 9浏览 0评论

使用NodeJ创建邮件服务

我有两个文件,我的app.js和我的邮件程序模块mailer.js。

我的app.js应该在启动应用程序时发送几封电子邮件。

const express = require('express');
const app = express();
const mailer = require('./Server/mailer');

mailer.sendHtmlMail(["email1", "email2"], "Test Email", "<p>Success!</p>");

app.listen(8888, function () {
    console.log('Server running on port 8888');
});

我的mailer.js执行邮件服务

    const nodemailer = require('nodemailer');

    const senderMail = "myEmail";

    const emailTransporter = nodemailer.createTransport({
      service: 'yahoo',
      auth: {
        user: senderMail,
        pass: 'pw'
      }
    });

    function getMailReceivers(mailReceivers){ // convert the string array to one string
      var receivers = "";

      for(var i = 0; i < mailReceivers.length; i++){
        receivers += mailReceivers[i];

        if(i < mailReceivers.length - 1)
            receivers += ", ";
      }

      return receivers;
    }

    function getMailOptions(mailReceivers, subject, html){ // set the mail options and return them
      return {
        from: senderMail,
        to: getMailReceivers(mailReceivers),
        subject: subj,
        html: content
      };
    }

    module.exports = function () { // export the sendMail function here

    sendHtmlMail: function(mailReceivers, subject, html){ // send the email
        emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
          if (error) {
            throw error;
          } else {
            console.log(info.response);
          }
        });
      }

    };

我收到此错误消息

SyntaxError: Unexpected token (
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:599:28)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\...\app.js:3:16)

但我不明白,是的

在对象。 (C:... \ app.js:3:16)

说第16行的邮件对象(第3行)有错误吗?我找不到任何语法错误..

回答如下:

mailer.js文件的结尾是问题所在。你看到的那个例外来自app.js的第3行,因为那是你require()的另一个文件。

问题是你已经将函数实例化与对象初始化混合在一起:

module.exports = function () { // export the sendMail function here

sendHtmlMail: function(mailReceivers, subject, html){ // send the email
    emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
      if (error) {
        throw error;
      } else {
        console.log(info.response);
      }
    });
  }

};

您的代码期望该模块导出具有sendHtmlMail属性的对象,因此它应该是对象初始值设定项:

module.exports = { // export the sendMail function here

  sendHtmlMail: function(mailReceivers, subject, html){ // send the email
    emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
      if (error) {
        throw error;
      } else {
        console.log(info.response);
      }
    });
  }
};

使用NodeJ创建邮件服务

我有两个文件,我的app.js和我的邮件程序模块mailer.js。

我的app.js应该在启动应用程序时发送几封电子邮件。

const express = require('express');
const app = express();
const mailer = require('./Server/mailer');

mailer.sendHtmlMail(["email1", "email2"], "Test Email", "<p>Success!</p>");

app.listen(8888, function () {
    console.log('Server running on port 8888');
});

我的mailer.js执行邮件服务

    const nodemailer = require('nodemailer');

    const senderMail = "myEmail";

    const emailTransporter = nodemailer.createTransport({
      service: 'yahoo',
      auth: {
        user: senderMail,
        pass: 'pw'
      }
    });

    function getMailReceivers(mailReceivers){ // convert the string array to one string
      var receivers = "";

      for(var i = 0; i < mailReceivers.length; i++){
        receivers += mailReceivers[i];

        if(i < mailReceivers.length - 1)
            receivers += ", ";
      }

      return receivers;
    }

    function getMailOptions(mailReceivers, subject, html){ // set the mail options and return them
      return {
        from: senderMail,
        to: getMailReceivers(mailReceivers),
        subject: subj,
        html: content
      };
    }

    module.exports = function () { // export the sendMail function here

    sendHtmlMail: function(mailReceivers, subject, html){ // send the email
        emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
          if (error) {
            throw error;
          } else {
            console.log(info.response);
          }
        });
      }

    };

我收到此错误消息

SyntaxError: Unexpected token (
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:599:28)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\...\app.js:3:16)

但我不明白,是的

在对象。 (C:... \ app.js:3:16)

说第16行的邮件对象(第3行)有错误吗?我找不到任何语法错误..

回答如下:

mailer.js文件的结尾是问题所在。你看到的那个例外来自app.js的第3行,因为那是你require()的另一个文件。

问题是你已经将函数实例化与对象初始化混合在一起:

module.exports = function () { // export the sendMail function here

sendHtmlMail: function(mailReceivers, subject, html){ // send the email
    emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
      if (error) {
        throw error;
      } else {
        console.log(info.response);
      }
    });
  }

};

您的代码期望该模块导出具有sendHtmlMail属性的对象,因此它应该是对象初始值设定项:

module.exports = { // export the sendMail function here

  sendHtmlMail: function(mailReceivers, subject, html){ // send the email
    emailTransporter.sendMail(getMailOptions(mailReceivers, subject, html), function(error, info){
      if (error) {
        throw error;
      } else {
        console.log(info.response);
      }
    });
  }
};

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论