我很沮丧,我已经用尽了我认为是好的谷歌搜索。我正在创建一个web应用程序,并使用Angular Seed作为我的起点。本项目使用http-server。我已经创建了几个视图/控制器/等等。我的一个视图有一个联系人表单。我想我可以很容易地添加nodemailer来使我能够以电子邮件的形式发送表单。这是一个巨大的失败。我在网上看到了很多例子,告诉我将nodemailer代码添加到app.js中,但我不断收到错误,说require是未定义的。我不知道还能做什么。下面是我正在做的事情:
app.js:
'use strict';
(function() {
// Declare app level module which depends on views, and components
var myApp = angular.module('myApp', [
'ngRoute',
'sn.skrollr',
'ng.picturefill',
'ngAnimate',
'ui.bootstrap',
'myApp.version'
]).config(["snSkrollrProvider", function(snSkrollrProvider) {
snSkrollrProvider.config = { smoothScrolling: true,};
}]);
//initialise skrollr at runtime
myApp.run(["snSkrollr", function(snSkrollr) {
snSkrollr.init();
console.log("in init ");
}]);
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when("/homePage", {
templateUrl: "Views/homePage.html",
json: 'json/home.json',
controller: 'homeController'
}).
when("/ourMission", {
templateUrl: "Views/mission.html",
json: 'json/mission.json',
controller: 'ourMissionController'
}).
when("/achievements", {
templateUrl: "Views/achievements.html",
json: 'json/achievements.json',
controller: 'achievementsController'
}).
when("/whoWeAre", {
templateUrl: "Views/whoWeAre.html",
json: 'json/whoWeAre.json',
controller: 'whoWeAreController'
}).
when("/contact", {
templateUrl: "Views/contact.html",
json: 'json/contact.json',
controller: 'contactUsController'
}).
when("/globalNav", {
templateUrl: "Navigation/bandedNavTemplate.html",
controller: 'bandedNavControl',
json: 'json/globalNav.json'
}).
otherwise({redirectTo: '/homePage'})
}]);
})();package.json:
{
"name": "C4P",
"private": true,
"version": "0.0.0",
"description": "C4P ",
"repository": "https://github.com/angular/angular-seed",
"license": "MIT",
"devDependencies": {
"bower": "^1.3.1",
"gulp": "^3.9.0",
"gulp-concat-css": "^2.2.0",
"gulp-sass": "^2.1.0",
"http-server": "^0.6.1",
"jasmine-core": "^2.3.4",
"karma": "~0.12",
"karma-chrome-launcher": "^0.1.12",
"karma-firefox-launcher": "^0.1.6",
"karma-jasmine": "^0.3.5",
"karma-junit-reporter": "^0.2.2",
"protractor": "^2.1.0",
"shelljs": "^0.2.6"
},
"scripts": {
"postinstall": "bower install",
"prestart": "npm install",
"start": "http-server -a localhost -p 8000 -c-1",
"pretest": "npm install",
"test": "karma start karma.conf.js",
"test-single-run": "karma start karma.conf.js --single-run",
"preupdate-webdriver": "npm install",
"update-webdriver": "webdriver-manager update",
"preprotractor": "npm run update-webdriver",
"protractor": "protractor e2e-tests/protractor.conf.js",
"update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + sed(/sourceMappingURL=angular-loader.min.js.map/,'sourceMappingURL=bower_components/angular-loader/angular-loader.min.js.map','app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
},
"dependencies": {
"nodemailer": "^2.3.0"
}}
如果我尝试将以下代码添加到app.js中,则会出现错误:
'use strict'
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail", // sets automatically host, port and connection security settings
auth: {
user: "user@gmail.com",
pass: "12346Guuhf."
}
});
smtpTransport.sendMail({ //email options
from: "Sender P <email@gmail.com>", // sender address. Must be the same as authenticated user if using Gmail.
to: "Receiver Name <receiver@email.com>", // receiver
subject: "Emailing with nodemailer", // subject
text: "Email Example with nodemailer" // body
}, function(error, response){ //callback
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
smtpTransport.close(); // shut down the connection pool, no more messages. Comment this line out to continue sending emails.});
我把这段代码添加到错误的地方了吗?
提前感谢您的任何意见。
发布于 2016-04-15 19:57:40
首先,您应该区分客户端( angular代码)和服务器端( node.js)代码。在您的示例中,看起来您在您的angular应用程序中使用了nodejs代码,这将无法工作。
一旦您的服务器端被托管(请参阅here的说明),然后您可以使用$http从客户端调用它(在angular中)。
在服务器端,我建议你使用Express设置它,这样你就可以处理路由(因此可以接受senderEmail,senderName,html等参数。你可以在Angular中找到一个full example (使用$http)和一个带有Nodemailer依赖的NodeJS的Express设置。
https://stackoverflow.com/questions/36395308
复制相似问题