![](/img/trans.png)
[英]Getting “TypeError: undefined is not a function” when trying to send email using mailgun
[英]Mailgun in nodejs - mg is not a function
我一直在嘗試將郵件槍與 nodemailer 一起用於 email 服務。
這是我的 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 package 似乎由於某種原因被稱為mailgun-nodemailer-transport
,而不是nodemailer-mailgun-transport
。
我會嘗試更改線路:
var mg = require("nodemailer-mailgun-transport");
至
var mg = require("mailgun-nodemailer-transport");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.