您如何从 Mean.js 堆栈上的 Angular 控制器发送电子邮件?
How do you send emails from Angular controllers on the Mean.js stack?
我正在使用 Mean.js 堆栈,但在弄清楚如何使用 AngularJS 控制器内部的 nodemailer 包发送电子邮件时遇到了问题。我有以下代码:
var mailOptions = {
from: 'Hello <hello@email.com>',
to: 'email@gmail.com',
subject: 'email subject',
text: 'email body',
html: 'html body'
};
var smtpTransport = nodemailer.createTransport(config.mailer.options);
smtpTransport.sendMail(mailOptions, function(err) {
if (!err) {
res.send({
message: 'Email has been sent'
});
}
done(err);
});
但是我收到错误 ReferenceError: nodemailer is not defined
。我尝试使用以下方法将依赖项注入控制器:
angular.module('offers').controller('OffersController', ['$scope', '$stateParams', '$location', 'Authentication', 'Offers', 'nodemailer',
function($scope, $stateParams, $location, Authentication, Offers, nodemailer) {
...
但我只收到错误 Unknown provider: nodemailerProvider
。我也已经将依赖项添加到 app/config/express.js nodemailer = require('nodemailer')
,但仍然没有成功。
我在 npm 包 nodemailer/src/nodemailer.js 中看到以下几行:
function Nodemailer(transporter) {
...
和
module.exports.createTransport = function(transporter)
...
所以我假设我可以通过全局 Nodemailer 对象访问包,如下所示:Nodemailer.createTransport(...)
,但这也是未定义的。
感谢您的帮助!
我认为 Nodemailer 必须 运行 在服务器端。
只需使用来自 angular 的 $http
请求触发发送。
你可以找一个例子here
如果您收到引用错误,请检查您是否已使用 npm install nodemailer --save
正确安装 nodemailer
。
在您的代码中,您不能在 angular 控制器中注入 nodemailer,因为它不是服务或提供程序。
您有 2 个选择:-
假设它仅作为节点包提供并且您已经安装了它,您可以将脚本包含在 node_modules 文件夹中的 html 文件中,这样就可以了nodemailer 将作为全局对象在您的应用程序中可用。就我个人而言,我不会使用这种方法,而是采用第二种方法。
这是首选选项 - 在您的节点服务器上创建一个 http 端点,它使用 nodemailer 执行邮件位。然后发送一个http请求到端点做你想做的。
我认为 Nodemailer 必须 运行 在服务器端。
只需使用来自 angular 的 $http 请求触发发送。
您可以在此处找到示例
如果您遇到引用错误,请使用 npm install nodemailer --save 检查您是否正确安装了 nodemailer。
我正在使用 Mean.js 堆栈,但在弄清楚如何使用 AngularJS 控制器内部的 nodemailer 包发送电子邮件时遇到了问题。我有以下代码:
var mailOptions = {
from: 'Hello <hello@email.com>',
to: 'email@gmail.com',
subject: 'email subject',
text: 'email body',
html: 'html body'
};
var smtpTransport = nodemailer.createTransport(config.mailer.options);
smtpTransport.sendMail(mailOptions, function(err) {
if (!err) {
res.send({
message: 'Email has been sent'
});
}
done(err);
});
但是我收到错误 ReferenceError: nodemailer is not defined
。我尝试使用以下方法将依赖项注入控制器:
angular.module('offers').controller('OffersController', ['$scope', '$stateParams', '$location', 'Authentication', 'Offers', 'nodemailer',
function($scope, $stateParams, $location, Authentication, Offers, nodemailer) {
...
但我只收到错误 Unknown provider: nodemailerProvider
。我也已经将依赖项添加到 app/config/express.js nodemailer = require('nodemailer')
,但仍然没有成功。
我在 npm 包 nodemailer/src/nodemailer.js 中看到以下几行:
function Nodemailer(transporter) {
...
和
module.exports.createTransport = function(transporter)
...
所以我假设我可以通过全局 Nodemailer 对象访问包,如下所示:Nodemailer.createTransport(...)
,但这也是未定义的。
感谢您的帮助!
我认为 Nodemailer 必须 运行 在服务器端。
只需使用来自 angular 的 $http
请求触发发送。
你可以找一个例子here
如果您收到引用错误,请检查您是否已使用 npm install nodemailer --save
正确安装 nodemailer
。
在您的代码中,您不能在 angular 控制器中注入 nodemailer,因为它不是服务或提供程序。
您有 2 个选择:-
假设它仅作为节点包提供并且您已经安装了它,您可以将脚本包含在 node_modules 文件夹中的 html 文件中,这样就可以了nodemailer 将作为全局对象在您的应用程序中可用。就我个人而言,我不会使用这种方法,而是采用第二种方法。
这是首选选项 - 在您的节点服务器上创建一个 http 端点,它使用 nodemailer 执行邮件位。然后发送一个http请求到端点做你想做的。
我认为 Nodemailer 必须 运行 在服务器端。
只需使用来自 angular 的 $http 请求触发发送。
您可以在此处找到示例
如果您遇到引用错误,请使用 npm install nodemailer --save 检查您是否正确安装了 nodemailer。