Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js (节点:23977)未处理的PromisejectionWarning:错误:缺少“";普通的;_Node.js_Nodemailer - Fatal编程技术网

Node.js (节点:23977)未处理的PromisejectionWarning:错误:缺少“";普通的;

Node.js (节点:23977)未处理的PromisejectionWarning:错误:缺少“";普通的;,node.js,nodemailer,Node.js,Nodemailer,我正在尝试将电子邮件从站点发送到post office Mail.ru,但出现以下错误: (node:25258) UnhandledPromiseRejectionWarning: Error: Missing credentials for "PLAIN" at SMTPConnection._formatError (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:784:19

我正在尝试将电子邮件从站点发送到post office Mail.ru,但出现以下错误:

(node:25258) UnhandledPromiseRejectionWarning: Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
at SMTPConnection.login (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:448:38)
at /home/user/server/node_modules/nodemailer/lib/smtp-transport/index.js:271:32
at SMTPConnection.<anonymous> (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:215:17)
at Object.onceWrapper (events.js:421:28)
at SMTPConnection.emit (events.js:315:20)
at SMTPConnection._actionEHLO (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:1313:14)
at SMTPConnection._processResponse (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:942:20)
at SMTPConnection._onData (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData (/home/user/server/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
(node:25258) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:25258) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(节点:25258)未处理的PromisejectionWarning:错误:缺少“普通”的凭据
在SMTPConnection.\格式错误(/home/user/server/node\u modules/nodeEmailer/lib/smtp connection/index.js:784:19)
在SMTPConnection.login(/home/user/server/node_modules/nodemailer/lib/smtp connection/index.js:448:38)
at/home/user/server/node_modules/nodemailer/lib/smtp transport/index.js:271:32
在SMTP连接处。(/home/user/server/node_modules/nodeEmailer/lib/smtp connection/index.js:215:17)
在Object.onceWrapper(events.js:421:28)
在SMTPConnection.emit(events.js:315:20)
在SMTPConnection.\u actionEHLO(/home/user/server/node\u modules/nodemailer/lib/smtp connection/index.js:1313:14)
在SMTPConnection.\u processResponse(/home/user/server/node\u modules/nodemailer/lib/smtp connection/index.js:942:20)
在SMTPConnection._onData(/home/user/server/node_modules/nodemailer/lib/smtp connection/index.js:749:14)
在TLSSocket.SMTPConnection.\u onSocketData(/home/user/server/node\u modules/nodemailer/lib/smtp connection/index.js:195:44)
(节点:25258)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:1)
(节点:25258)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
下面是后端代码本身:

    const express      = require('express');
const nodemailer   = require('nodemailer');
const Parser       = require('body-parser');
const sqlite3      = require('sqlite3').verbose();

const server       = express();

let path_services  = (   __dirname   +   '/public/static/img/services/'   );
let path_html      = (   __dirname   +   '/public/index.html'             );
let path_font      = (   __dirname   +   '/public/static/font/'           );
let path_css       = (   __dirname   +   '/public/static/css/'            );
let path_img       = (   __dirname   +   '/public/static/img/'            );
let path_js        = (   __dirname   +   '/public/static/js/'             );
let path_db        = (   __dirname   +   '/Main.db'                       );

const Body_Parser = Parser.urlencoded({extended: false});



server.get('/', Body_Parser , function(request, response) {
    response.sendFile(path_html);
});

server.post('/', Body_Parser, function(request, response) {
    let db = new sqlite3.Database(path_db, sqlite3.OPEN_READWRITE, (err) => {
        if(err) {
            console.error(err.message);
        }
        console.log('Connected to Database!');
    });
    db.run('INSERT INTO Client(firstname, lastname, email, phone, message) VALUES($firstname, $lastname, $email, $phone, $message)', {
        $firstname: request.body.ghostName,
        $lastname: request.body.ghostSurname,
        $email: request.body.ghostEmail,
        $phone: request.body.ghostPhone,
        $message: request.body.ghostMessage
    }, function(err) {
        if(err) {
            console.log(err.message);
        }
        console.log('Good!');
        response.end('Ok!');
    });
    db.close();
    
    let testEmailAccount = nodemailer.createTestAccount();
    let transporter = nodemailer.createTransport({
        service:    'email',
      host: 'smtp.ethereal.email',
      port: 587,
      secure: false,
      auth: {
        type: "login", // default
        user: testEmailAccount.user,
        pass: testEmailAccount.pass
      }
    });
    
    let result = transporter.sendMail({
      from: '"Node js" <nodejs@example.com>',
      to: "chrome_777111777@mail.ru",
      subject: "Message from Node js",
      text: "This message was sent from Node js server.",
      html: "This <i>message</i> was sent from <strong>Node js</strong> server."
    });
    
    console.log(result);
    
});



server.use(express.static  (path_services) );
server.use(express.static  (path_font)     );
server.use(express.static  (path_css)      );
server.use(express.static  (path_img)      );
server.use(express.static  (path_js)       );

server.listen(8000);
const express=require('express');
const nodemailer=require('nodemailer');
const Parser=require('body-Parser');
const sqlite3=require('sqlite3').verbose();
const server=express();
让path_services=(u dirname+'/public/static/img/services/);
让path_html=(u dirname+'/public/index.html');
让path_font=(u dirname+'/public/static/font/');
让path_css=(u dirname+/public/static/css/);
让path_img=(u dirname+'/public/static/img/');
让path_js=(u dirname+'/public/static/js/');
让path_db=(u dirname+'/Main.db');
const Body_Parser=Parser.urlencoded({extended:false});
get('/',Body_解析器,函数(请求,响应){
sendFile(path_html);
});
server.post('/',Body_解析器,函数(请求,响应){
让db=new sqlite3.Database(路径\u db,sqlite3.OPEN\u READWRITE,(err)=>{
如果(错误){
控制台错误(错误消息);
}
log('连接到数据库!');
});
db.run('插入到客户端(firstname,lastname,email,phone,message)值($firstname,$lastname,$email,$phone,$message)'{
$firstname:request.body.ghostName,
$lastname:request.body.ghostname,
$email:request.body.ghostmail,
$phone:request.body.ghostPhone,
$message:request.body.ghostMessage
},函数(err){
如果(错误){
控制台日志(错误消息);
}
console.log('Good!');
响应。结束('Ok!');
});
db.close();
让testEmailAccount=nodeEmailer.createTestAccount();
让transporter=nodeEmailer.createTransport({
服务:'电子邮件',
主机:“smtp.ethereal.email”,
港口:587,
安全:错误,
认证:{
类型:“login”,//默认值
用户:testEmailAccount.user,
通过:testEmailAccount.pass
}
});
让结果=transporter.sendMail({
发件人:“‘节点js’”,
致:“铬_777111777@mail.ru",
主题:“来自节点js的消息”,
text:“此消息是从Node js服务器发送的。”,
html:“此消息是从节点js服务器发送的。”
});
控制台日志(结果);
});
使用(express.static(path_services));
使用(express.static(path_font));
使用(express.static(path_css));
使用(express.static(path_img));
使用(express.static(path_js));
服务器监听(8000);

我请求你的帮助,因为我已经访问了大量的网站(从官方文档开始,到很多不熟悉的论坛结束),但我所到之处都有关于向Gmail发送电子邮件的消息,关于向电子邮件发送电子邮件,只有在文档和其他几个从文档中复制信息的网站上才提到。如果你能帮助我,我将非常感激

nodemailer.createTestAccount
是一个异步函数,这意味着,您只需将wait关键字放在它前面,如下所示:

 let testEmailAccount = await nodemailer.createTestAccount();
否则,
testEmailAccount
是一个承诺,
testEmailAccount。用户
testEmailAccount
会导致
未定义

在您的情况下,您还必须使app.post回调成为一个异步函数:

server.post('/', Body_Parser, async function(request, response) {
  // ...
}