javascript - nodejs中的Mailgun-mg不是函数
问题描述
我一直在尝试将邮件枪与 nodemailer 一起用于电子邮件服务。
这是我的 auth.js 文件的样子:
const bcrypt = require("bcryptjs");
const User = require("../models/user");
var nodemailer = require("nodemailer");
var mg = require("nodemailer-mailgun-transport");
var auth = {
auth: {
api_key: "****",
domain:"xyz"
},
};
var nodemailerMailgun = nodemailer.createTransport(mg(auth));
exports.getLogin = (req, res, next) => {
let message = req.flash("error");
if (message.length > 0) {
message = message[0];
} else {
message = null;
}
console.log(req.flash("error"));
res.render("auth/login", {
isAuthenticated: false,
errorMessage: message,
});
};
exports.getsignup = (req, res, next) => {
res.render("auth/signup", {
isAuthenticated: false,
});
};
exports.postLogin = (req, res, next) => {
const email = req.body.email;
const password = req.body.password;
User.findOne({ email: email })
.then((user) => {
if (!user) {
req.flash("error", "Invalid email or password.");
return res.redirect("/login");
}
bcrypt
.compare(password, user.password)
.then((doMatch) => {
if (doMatch) {
req.session.isLoggedIn = true;
req.session.user = user;
return req.session.save((err) => {
console.log(err);
res.redirect("/");
});
}
req.flash("error", "Invalid email or password.");
res.redirect("/login");
})
.catch((err) => {
console.log(err);
res.redirect("/login");
});
})
.catch((err) => console.log(err));
};
exports.postLogout = (req, res, next) => {
req.session.destroy((err) => {
console.log(err);
res.redirect("/");
});
};
exports.postsignup = (req, res, next) => {
const email = req.body.email;
const password = req.body.password;
User.findOne({ email: email })
.then((userDoc) => {
if (userDoc) {
return res.redirect("/signup");
}
return bcrypt
.hash(password, 12)
.then((hashedPassword) => {
const user = new User({
email: email,
password: hashedPassword,
cart: { items: [] },
});
return user.save();
})
.then((result) => {
nodemailerMailgun
.sendMail({
from: "email@example.com",
to: "nishitsadual@gmail.com",
replyTo: "reply-to@example.com",
subject: "Mailgun Transport",
text: "This is text content",
})
.then((info) => {
console.log("SUCCESS");
})
.catch((error) => {
console.log("Something is wrong");
});
res.redirect("/login");
});
})
.catch((err) => {
console.log(err);
});
};
但是,我收到一个错误,即mg is not a function
. 我的依赖项如下所示:
$ npm ls --depth=0
+-- bcryptjs@2.4.3
+-- body-parser@1.19.0
+-- connect-flash@0.1.1
+-- connect-session-sequelize@7.0.1
+-- csrf@3.1.0
+-- csurf@1.11.0
+-- ejs@3.1.3
+-- express@4.17.1
+-- express-session@1.17.1
+-- express-session-sequelize@2.3.0
+-- mailgun-nodemailer-transport@1.4.0
+-- mysql2@2.1.0
+-- nodemailer@6.4.11
+-- request@2.88.2
+-- save@2.4.0
+-- sequelize@6.3.1
我的示例基本上是官方快速入门示例的复制粘贴。
由于某种原因,要求nodemailer-mailgun-transport
不能按预期工作。
任何帮助,将不胜感激。
解决方案
在快速查看您的 npm 转储后,您的 mailgun 包似乎由于某种原因被称为mailgun-nodemailer-transport
,而不是nodemailer-mailgun-transport
.
我会尝试更改线路:
var mg = require("nodemailer-mailgun-transport");
至
var mg = require("mailgun-nodemailer-transport");
推荐阅读
- javascript - MarkerClusterer 在“option”对象下的“gridSize”定义了什么?
- javascript - 如何获取mapbox上像素的颜色
- python - 如何从组合框中获取属性并将其放入变量中?
- regex - 使用正则表达式在 Powershell 中解析 INI 文件
- python - 如何为列中的每个值分配(并添加为列)唯一的 int,从 0 开始,第 0 行的第一个列值,并迭代 1
- c# - 获取内部数据库中用户相关数据的 Cognito 唯一标识符
- c - WinAPI - 如何实现 ListView 排序?
- powershell - 提取和排序大文本文件
- html - 如何隐藏元素?
- c - 检查指针是否为 64 字节对齐时出错