繁体   English   中英

使用 nodemailer 向 gmail 发送邮件时出现问题

[英]Problems sending mail to gmail with nodemailer

我正在尝试使用 nodemailer 在我的网站中添加联系表格。 使用纯文本,发送了 email(使用 cmd 节点 server.js),但由于我在 html 中添加了一个表单,并尝试使用“req.anddiesbo3EZ”发送它不再起作用,并且尝试发送“req”。我有以下错误:错误:缺少“PLAIN”的凭据。

这是我的代码:

索引.js

    var express = require("express");
var router = express.Router();
const nodemailer = require("nodemailer");

/* GET home page. */
router.get("/", function (req, res, next) {
res.render("index", { title: "Express" });
});

router.post("/send-email", async function (req, res, next) {
"use strict";
var email = req.body.email;
var name = req.body.name;
var message = req.body.message;

var transporter = nodemailer.createTransport({
  // host: "smtp.gmail.com",
  service: "gmail",
  // secure : false,
  auth: {
    user: process.env.EMAIL,
    pass: process.env.PASSWORD,
  },
});

console.log("message :", req.body.message, "email :", req.body.email);
// send mail with defined transport object
var mailOptions = {
  from: email,
  to: process.env.EMAIL,
  subject: "Nouveau mail contact de " + name, // Subject line
  text: name + "0102030405" + message,
};

transporter.sendMail(mailOptions, function (error, response) {
  if (error) {
    console.log(error);
  } else {
    res.redirect("/");
  }
});
});

module.exports = router;

服务器.js

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const port = 3000;

require("dotenv").config();
app.use(bodyParser.json());

const nodemailer = require("nodemailer");
app.listen(port, () => {
console.log(`Server running on ${port}`);
});

app.use("/index", require("./routes/index"));

// let transport = nodemailer.createTransport({
//   service: "gmail",
//   auth: {
//     user: process.env.EMAIL,
//     pass: process.env.PASSWORD,
//   },
// });

// let mailOptions = {
//   from: '"Fred Foo 👻" <process.env.EMAIL>', // sender address
//   to: "process.env.EMAIL", // list of receivers
//   subject: "Hello ✔", // Subject line
//   text: "Hello world?", // plain text body
//   html: "<b>Hello world?</b>", // html body
// };

// transport.sendMail(mailOptions, function (err, data) {
//   if (err) {
//     console.log("Error Occurs");
//   } else {
//     console.log("Email sent !!");
//   }
// });

html

<form action="/send-email" method="POST">
    Your Name:
    <input type="text" name="name">
    Email Address:
    <input type="email" name="email" placeholder="Email">
    Message:
    <textarea name="message"></textarea>
    <input type="submit" value="Submit">
  </form>

Body-Parser 似乎不起作用,因为它是三振出局。 在我的 gmail 帐户上启用了“不太安全”的应用程序

非常感谢您的帮助 !

编辑:我认为这是因为它无法识别我的 process.env 因为当我直接编写它们时,它可以工作。

我将我的 file.env 放在同一个目录中,但它仍然无法识别它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM