首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Angular-Seed实现nodemailer

使用Angular-Seed实现nodemailer
EN

Stack Overflow用户
提问于 2016-04-04 13:46:59
回答 1查看 365关注 0票数 1

我很沮丧,我已经用尽了我认为是好的谷歌搜索。我正在创建一个web应用程序,并使用Angular Seed作为我的起点。本项目使用http-server。我已经创建了几个视图/控制器/等等。我的一个视图有一个联系人表单。我想我可以很容易地添加nodemailer来使我能够以电子邮件的形式发送表单。这是一个巨大的失败。我在网上看到了很多例子,告诉我将nodemailer代码添加到app.js中,但我不断收到错误,说require是未定义的。我不知道还能做什么。下面是我正在做的事情:

app.js:

代码语言:javascript
复制
'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:

代码语言:javascript
复制
{
  "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中,则会出现错误:

代码语言:javascript
复制
'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.

});

我把这段代码添加到错误的地方了吗?

提前感谢您的任何意见。

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 19:57:40

首先,您应该区分客户端( angular代码)和服务器端( node.js)代码。在您的示例中,看起来您在您的angular应用程序中使用了nodejs代码,这将无法工作。

一旦您的服务器端被托管(请参阅here的说明),然后您可以使用$http从客户端调用它(在angular中)。

在服务器端,我建议你使用Express设置它,这样你就可以处理路由(因此可以接受senderEmailsenderNamehtml等参数。你可以在Angular中找到一个full example (使用$http)和一个带有Nodemailer依赖的NodeJS的Express设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36395308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档