Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript NodeEmailer不断地给我一个错误:“我不知道怎么做。”;TypeError[ERR_INVALID_ARG_TYPE]:该;“块”;参数的类型必须为string或…“;_Javascript_Node.js_Express_Nodemailer - Fatal编程技术网

Javascript NodeEmailer不断地给我一个错误:“我不知道怎么做。”;TypeError[ERR_INVALID_ARG_TYPE]:该;“块”;参数的类型必须为string或…“;

Javascript NodeEmailer不断地给我一个错误:“我不知道怎么做。”;TypeError[ERR_INVALID_ARG_TYPE]:该;“块”;参数的类型必须为string或…“;,javascript,node.js,express,nodemailer,Javascript,Node.js,Express,Nodemailer,完整错误非常长,但下面是一个片段: TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object at PassThrough.Writable.write (_stream_writable.js:289:13) at PassThrou

完整错误非常长,但下面是一个片段:

    TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
    at PassThrough.Writable.write (_stream_writable.js:289:13)
    at PassThrough.Writable.end (_stream_writable.js:583:10)
    at Immediate._onImmediate (C:\Users\small\desktop\career-change\coding-round-2\portfolio-round1\recipe-app\projectv2\node_modules\nodemailer\lib
\mime-node\index.js:969:46)
    at processImmediate (internal/timers.js:456:21) {
  code: 'ERR_INVALID_ARG_TYPE'
}
这是我第一次使用nodemailer,或者任何电子邮件服务。我最初是在我的个人gmail帐户上使用它的,后来发现gmail阻止了它,因为它被认为是一个不太安全的应用程序。因此,我更改了电子邮件设置,允许从不太安全的应用程序进行访问。然后我开始犯这个错误

我还尝试使用自动生成电子邮件测试帐户,这样我就可以避免使用gmail,以防出现问题

这是我的节点邮箱代码:

const express = require("express");
const router = express.Router();
const bodyParser = require("body-parser");
const nodemailer = require("nodemailer");

router.post("/contact", (req, res) => {
  const output = {
    msg: `You have a new contact request from ${req.body.name}`,
    userEmail: req.body.userEmail,
    subject: req.body.subject,
    message: req.body.message,
  };
  console.log(res);

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    auth: {
      user: "ida.pollich73@ethereal.email",
      pass: "JPtPvputy6n8JBzYe2",
    },
  });

  let mailOptions = {
    from: '"Nodemailer Contact" <mypersonalaccount@gmail.com>', // sender address
    to: "differentpersonalaccount@gmail.com", // list of receivers
    subject: "Node Contact Request", // Subject line
    text: output, // plain text body
    html: output, // html body
  };

  // send mail with defined transport object
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    } else {
      console.log(info);
    }
    res.send("email sent");
    console.log("Message sent: %s", info.messageId);
    // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>

    // Preview only available when sending through an Ethereal account
    console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
    // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
  });
});

module.exports = router;
const express=require(“express”);
const router=express.router();
const bodyParser=require(“body parser”);
const nodemailer=require(“nodemailer”);
路由器。post(“/contact)”,(请求、回复)=>{
常量输出={
msg:`您有一个来自${req.body.name}的新联系请求,`,
userEmail:req.body.userEmail,
主题:req.body.subject,
消息:req.body.message,
};
控制台日志(res);
//使用默认SMTP传输创建可重用的传输对象
让transporter=nodeEmailer.createTransport({
主机:“smtp.ethereal.email”,
港口:587,
认证:{
用户:“艾达。pollich73@ethereal.email",
通过:“JPtPvputy6n8JBzYe2”,
},
});
让邮件选项={
发件人:“‘nodeEmailer联系人’,//发件人地址
至:differentpersonalaccount@gmail.com“,//接收者列表
主题:“节点联系请求”,//主题行
text:output,//纯文本正文
html:output,//html正文
};
//使用定义的传输对象发送邮件
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}否则{
控制台日志(信息);
}
res.send(“电子邮件发送”);
console.log(“发送的消息:%s”,info.messageId);
//已发送的消息:
//预览仅在通过Ethereal帐户发送时可用
log(“预览URL:%s”,nodeEmailer.getTestMessageUrl(info));
//预览URL:https://ethereal.email/message/WaQKMgKddxQDoou...
});
});
module.exports=路由器;

有人知道这个错误是什么意思吗?如果您需要更多信息,请告诉我。

我找不到有什么问题,但为了以防万一,请尝试一下Mailgun,它就像charmThanks一样工作,我会查看一下。我认为最好通过console.log(typeof(output))检查text和html使用的输出变量类型。它可以是object。我找不到有什么问题,但为了以防万一,请尝试一下Mailgun,它的工作原理就像一个charmThanks,我来看看。我认为最好通过console.log(typeof(output))检查text和html使用的输出变量的类型。它可以是对象。