首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodemailer和Amazon

Nodemailer和Amazon
EN

Stack Overflow用户
提问于 2014-06-01 17:04:26
回答 5查看 28.3K关注 0票数 19

我的结构:

代码语言:javascript
复制
site
-- node_modules
---- nodemailer
-- webclient
---- js
------- controller.js

site/node_modules/nodemailer
site/webclient/js/controller.js

site/webclient/js/controller.js:

代码语言:javascript
复制
    var nodemailer = require('../../node_modules/nodemailer');

    var transport = nodemailer.createTransport('SES', {
        AWSAccessKeyID: 'xxx', // real one in code
        AWSSecretKey: 'xxx', // real one in code
        ServiceUrl: 'email-smtp.us-west-2.amazonaws.com'
    });

    var message = {
        from: 'example@mail.com', // verified in Amazon AWS SES
        to: 'example@mail.com', // verified in Amazon AWS SES
        subject: 'testing',
        text: 'hello',
        html: '<p><b>hello</b></p>' +
              'test'
    };

    transport.sendMail(message, function(error) {
        if (error) {
            console.log(error);
        } else {
            console.log('Message sent: ' + response.message);
        }
    });

这段代码是控制器的一部分,在控制器中所有其他函数都能完美地工作。

  • 我遗漏了什么吗?
  • 也许我是打电话给不正确的nodemailer模块?
  • 或者传输应该是SMTP,而不是SES?

我卡住了。

EN

回答 5

Stack Overflow用户

发布于 2020-01-15 06:16:33

请直接使用aws.对我来说很管用。希望它能对你有帮助。

代码语言:javascript
复制
let nodemailer = require('nodemailer');
let AWS = require('aws-sdk');

// configure AWS SDK
AWS.config.update({
  accessKeyId: << SES_ACCESS_KEY >>,
  secretAccessKey: << SES_SECRET_KEY >>,
  region: << SES_REGION >>,
});

// create Nodemailer SES transporter
let transporter = nodemailer.createTransport({
SES: new AWS.SES({
  apiVersion: '2010-12-01'
})
});

// send some mail
transporter.sendMail({
  from: 'sender@example.com',
  to: 'recipient@example.com',
  subject: 'Message',
  text: 'I hope this message gets sent!'
}, (err, info) => {
  console.log(info.envelope);
  console.log(info.messageId);
});
票数 18
EN

Stack Overflow用户

发布于 2015-08-10 10:11:08

下面的代码是我使用的代码,它对我起了作用。这是针对当前NodeMailer的。其中需要单独包含传输模块。在以前的版本中,传输模块是内置的。

代码语言:javascript
复制
var nodemailer = require('nodemailer');
var sesTransport = require('nodemailer-ses-transport');

var SESCREDENTIALS = {
  accessKeyId: "accesskey",
  secretAccessKey: "secretkey"
};

var transporter = nodemailer.createTransport(sesTransport({
  accessKeyId: SESCREDENTIALS.accessKeyId,
  secretAccessKey: SESCREDENTIALS.secretAccessKey,
  rateLimit: 5
}));

var mailOptions = {
  from: 'FromName <registeredMail@xxx.com>',
  to: 'registeredMail@xyz.com', // list of receivers
  subject: 'Amazon SES Template TesT', // Subject line
  html: < p > Mail message < /p> / / html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log('Message sent: ' + info);
  }
});

更新

自从我上次写这个答案以来,nodemailer库已经被更新了。在其文档中提供了使用AWS SES库的正确方法。工作实例的链接

进一步阅读

票数 14
EN

Stack Overflow用户

发布于 2020-04-08 23:20:36

我在控制器中使用了这段代码,它对我非常有用。它正在使用AWS SES的SMTP auth。

代码语言:javascript
复制
var nodemailer = require('nodemailer');
var dotenv = require('dotenv').config();

var mailOptions = {
  from: 'example@email.com',
  to: 'other@email.com',
  text: 'This is some text',
  html: '<b>This is some HTML</b>',
};

// Send e-mail using SMTP
mailOptions.subject = 'Nodemailer SMTP transporter';
var smtpTransporter = nodemailer.createTransport({
  port: 465,
  host: process.env.AWS_REGION,
  secure: true,
  auth: {
    user: process.env.AWS_ACCESS_KEY_ID,
    pass: process.env.AWS_SECRET_ACCESS_KEY,
  },
  debug: true
});

smtpTransporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    console.log(error);
    res.status(error.responseCode).send(error.response);
  } else {
    console.log('Message sent: ' + info.response);
    res.status(200).send(info);
  }
});
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23982299

复制
相关文章

相似问题

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