通过Gmail使用Nodemailer发送电子邮件时,如何解决“未处理的承诺拒绝”问题

时间:2019-03-28 14:08:02

标签: javascript node.js nodemailer

我正在尝试使用Nodemailer和Node.js发送电子邮件,但是当我尝试发送电子邮件时,出现此错误:

  

UnhandledPromiseRejection警告:

     

错误:连接ETIMEDOUT   64.233.188.109:465       在TCPConnectWrap.afterConnect上[作为oncomplete](net.js:1113:14)(node:8876)

     

UnhandledPromiseRejectionWarning:未处理的承诺   拒绝。

     

此错误是由内部异步引发的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:2)

这是我的app.js:

const express = require("express");
const bodyParser = require("body-parser");
const exphbs = require("express-handlebars");
const path = require("path");
const nodemailer = require("nodemailer");

const app = express();

// View engine setup
app.engine("handlebars", exphbs());
app.set("view engine", "handlebars");

// Static folder
app.use("/public", express.static(path.join(__dirname, "public")));

// Body Parser Middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.get("/", (req, res) => {
  res.render("contact");
});

app.post("/send", async (req, res) => {
  const output = `
    <p>You have a new contact request</p>
    <h3>Contact Details</h3>
    <ul>
        <li>Name: ${req.body.name}</li>
        <li>Company: ${req.body.company}</li>
        <li>Email: ${req.body.email}</li>
        <li>Phone: ${req.body.phone}</li>
    </ul>
    <h3>Message</h3>
    <p>${req.body.message}</p>    
    `;

  var transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: "from@mail.com",
      pass: "myPassword"
    },
    tls: {
        rejectUnauthorized: false
    }
  });

  const mailOptions = {
    from: "from@mail.com", // sender address
    to: "to@mail.com", // list of receivers
    subject: "Test email", // Subject line
    html: output // plain text body
  };

  let info = await transporter.sendMail(mailOptions);

  console.log("Message sent: %s", info.messageId);
  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));

  res.render("contact", { msg: "Email has been sent" });
});

app.listen(3000, () => console.log("Server started..."));

这是我的 contact.handlebars

的正文:

<body>
<div class="container">
    <h1 class="brand"><span>Acme</span> Web Design</h1>
    <div class="wrapper animated bounceInLeft">
        <div class="company-info">
            <h3>Acme Web Design</h3>
            <ul>
                <li><i class="fa fa-road"></i> 44 Something st</li>
                <li><i class="fa fa-phone"></i> (555) 555-5555</li>
                <li><i class="fa fa-envelope"></i> test@acme.test</li>
            </ul>
        </div>
        <div class="contact">
            <h3>Email Us</h3>
            {{ msg }}
            <form method="POST" action="send">
                <p>
                    <label>Name</label>
                    <input type="text" name="name">
                </p>
                <p>
                    <label>Company</label>
                    <input type="text" name="company">
                </p>
                <p>
                    <label>Email Address</label>
                    <input type="email" name="email">
                </p>
                <p>
                    <label>Phone Number</label>
                    <input type="text" name="phone">
                </p>
                <p class="full">
                    <label>Message</label>
                    <textarea name="message" rows="5"></textarea>
                </p>
                <p class="full">
                    <button type="submit">Submit</button>
                </p>
            </form>
        </div>
    </div>
</div>

有人可以告诉我我的代码有什么问题吗?另外,我在我的createTransport()方法中使用了正确的值吗?

0 个答案:

没有答案