Javascript NodeJs模块导出和函数

Javascript NodeJs模块导出和函数,javascript,node.js,mongoose,nodemailer,Javascript,Node.js,Mongoose,Nodemailer,我正在设置NodeEmailr并尝试使用创建模型、控制器和邮件器。我知道我的功能有问题,但我不知道如何通过transport.sendmail功能发送邮件模型。我的最终目标是能够打电话给mailer发送电子邮件。也许我甚至不需要猫鼬 我认为我在解释我的目标时做得很差,我可以让Nodemailer在一个脚本中使用指定的邮件选项。但是我想导出一个函数,这样我就可以说sendMail(userEmail,subject,text);它不必通过猫鼬或mongoDB //model.js var mong

我正在设置NodeEmailr并尝试使用创建模型、控制器和邮件器。我知道我的功能有问题,但我不知道如何通过transport.sendmail功能发送邮件模型。我的最终目标是能够打电话给mailer发送电子邮件。也许我甚至不需要猫鼬

我认为我在解释我的目标时做得很差,我可以让Nodemailer在一个脚本中使用指定的邮件选项。但是我想导出一个函数,这样我就可以说sendMail(userEmail,subject,text);它不必通过猫鼬或mongoDB

//model.js
var mongoose = require('mongoose');
var mailSchema = mongoose.Schema;

var newMailSchema = new mailSchema( {
from: '"me" <me@gmail.com>', // sender address
to: '', // list of receivers
subject: '', // Subject line
text: '', // plain text body
html: '<b></b>' // html body
});

module.exports = mongoose.model(newMailSchema);

 //controller.js
'use strict';
const nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport({
host: 'smtp-mail.outlook.com',
port: 587,
secure: false, // secure:true for port 465, secure:false for port 587
auth: {
    user: 'me@hotmail.com',
    pass: 'password'
}
});


// send mail with defined transport object
var sender = function(){
transporter.sendMail(mailModel, (error, info) => {
if (error) {
    return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});

};
exports.sender = sender;


//mailer.js
var sendMail = require('./controller');
var newMailModel = require('./model');

var mailModel = new newMailModel({
from: '"me" <me@hotmail.com>', // sender address
to: 'you@gmail.com', // list of receivers
subject: 'Hi', // Subject line
text: 'Foo', // plain text body
html: '<b>Bar</b>' // html body
});
sendMail.sender(mailModel);
//model.js
var mongoose=require('mongoose');
var mailSchema=mongoose.Schema;
var newMailSchema=newMailSchema({
发件人:“‘我’,//发件人地址
收件人:“,//收件人列表”
主题:“”,//主题行
文本:“”,//纯文本正文
html:'//html正文
});
module.exports=mongoose.model(newMailSchema);
//controller.js
"严格使用",;
const nodemailer=require('nodemailer');
//使用默认SMTP传输创建可重用的传输对象
var transporter=nodeEmailer.createTransport({
主机:“smtp mail.outlook.com”,
港口:587,
secure:false,//secure:true用于端口465,secure:false用于端口587
认证:{
用户:'me@hotmail.com',
通行证:“密码”
}
});
//使用定义的传输对象发送邮件
var sender=函数(){
transporter.sendMail(mailModel,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}
console.log('发送的消息%s:%s',info.messageId,info.response);
});
};
exports.sender=发件人;
//mailer.js
var sendMail=require(“./controller”);
var newMailModel=require(“./model”);
var mailModel=新的newMailModel({
发件人:“‘我’,//发件人地址
致:'you@gmail.com“,//接收者列表
主题:'嗨',//主题行
text:'Foo',//纯文本正文
html:'Bar'//html正文
});
sendMail.sender(mailModel);

您可以按以下方式更正语法和定义,并适用于u

//model.js
var mongoose = require('mongoose');
var mailSchema = mongoose.Schema;

var newMailSchema = new mailSchema( {
    from: {type:String,default:'me@gmail.com'},
    to: String,
    subject: String,
    text: String,
    html: String
});

module.exports = mongoose.model('MailSchema',newMailSchema);

//controller.js

var newMailModel = require('./model');
const nodemailer = require('nodemailer');
exports.SendMail = function(req,res){
    var transporter = nodemailer.createTransport({
        host: 'smtp-mail.outlook.com',
        port: 587,
        secure: false, // secure:true for port 465, secure:false for port 587
        auth: {
            user: 'me@hotmail.com',
            pass: 'password'
        }
    });
    var mailOptions = {
        from: 'me@gmail,com', // sender address
        to: 'you@gmail.com', // list of receivers
        subject: 'Hi', // Subject line
        text: 'Foo', // plaintext body
        html:'<b>Bar</b>'
    };
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            return console.log(error);
        }else {
            console.log('Message %s sent: %s', info.messageId, info.response);
            var mailModel = new newMailModel({
                from: mailOptions.from,
                to: mailOptions.to,
                subject: mailOptions.subject,
                text: mailOptions.text,
                html: mailOptions.html,
            });
            mailModel.save();
            res.send('Mail Sent Successfully');
        }
    });
}

//router.js

var express = require('express'),
    router = express.Router(),
    controller = require('./controller.js');

router.post('/MailExample',controller.SendMail);
module.exports = router;
//model.js
var mongoose=require('mongoose');
var mailSchema=mongoose.Schema;
var newMailSchema=newMailSchema({
发件人:{type:String,默认值:'me@gmail.com'},
致:字符串,
主题:字符串,
文本:字符串,
html:String
});
module.exports=mongoose.model('MailSchema',newMailSchema);
//controller.js
var newMailModel=require(“./model”);
const nodemailer=require('nodemailer');
exports.SendMail=函数(请求、回复){
var transporter=nodeEmailer.createTransport({
主机:“smtp mail.outlook.com”,
港口:587,
secure:false,//secure:true用于端口465,secure:false用于端口587
认证:{
用户:'me@hotmail.com',
通行证:“密码”
}
});
var mailpoptions={
发件人:'me@gmail,com',//发件人地址
致:'you@gmail.com“,//接收者列表
主题:'嗨',//主题行
text:'Foo',//纯文本正文
html:'Bar'
};
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}否则{
console.log('发送的消息%s:%s',info.messageId,info.response);
var mailModel=新的newMailModel({
发件人:mailpoptions.from,
收件人:mailpoptions.to,
主题:mailpoptions.subject,
text:mailpoptions.text,
html:mailpoptions.html,
});
mailModel.save();
res.send(“邮件发送成功”);
}
});
}
//路由器.js
var express=require('express'),
路由器=express.router(),
controller=require('./controller.js');
router.post('/mailsample',controller.SendMail);
module.exports=路由器;

我将回答您是否需要db的问题。 如果您需要保存用户的输入,以便将来恢复同一特定用户的状态,那么您需要一个db。 但是,如果它是一个只发送电子邮件的应用程序,并且不依赖于您所在州的任何其他内容,那么您就不需要数据库


另一种选择是将数据保存在浏览器的缓存中,以便客户端保存和恢复最后一个用户的输入。

那么您的目标是什么?从MongoDB获取收件人,然后向此人发送电子邮件?是的,用户输入他们的信息,我将其保存到MongoDB中,然后我希望能够获取他们的信息并向他们发送电子邮件。这样我就可以发送邮件(给,主题,文本)给你提到的用户-是注册用户-还是使用你的应用程序的客户?注册用户,我已经保存了他们的电子邮件,所以我获取这些信息没有问题。我希望能够调用像这样的sendMail(userEmail、subject、text);Ratan,这是一个很好的信息,但我不想发布,我只想能够调用sendMail函数来做一些类似sendMail(to,subject,text)的事情,你可以用同样的方式使用,而无需路由。我做什么都有困难,我会需要mongoose吗?那么我不需要数据库,我想导出nodeEmailer的功能,这样我就可以说sendMail(userEmail,subject,text);它会给他们发电子邮件