首页
学习
活动
专区
圈层
工具
发布

邮递员
EN

Stack Overflow用户
提问于 2017-10-22 18:36:01
回答 1查看 1.9K关注 0票数 2

我试图发送电子邮件时,一个用户注册到我的网站。我决定使用Nodemailer和MailGun,并逐渐意识到没有多少教程或优秀的文档可以一起工作。对于像MailGun这样的其他服务来说,似乎也是一个类似的问题。下面是我试着让它工作的代码。我看了一篇关于如何让它开始工作的教程,但似乎找不出答案。我认为密码是对的,但也许是错误的?或者我可以把这两样都拿走。我在开发环境中使用了cloud9.io,所以这可能就是问题所在?还是我的域名还没有被验证?

路由:

代码语言:javascript
复制
app.post('/signup',
    setRedirect({auth: '/dashboard', success: '/dashboard', failure: '/signup'}),
    isUnauthenticated,
    registrations.postSignup,
    (req, res) =>{
      const output = `
        <h1>Your email is: ${req.body.email}</h1>
         `;

      // create reusable transporter object using the default SMTP transport
      let transporter = nodemailer.createTransport({
        host: 'postmaster@MYSUBDOMAIN',
        port: 587,
        secure: false, // true for 465, false for other ports
        auth: {
            user: 'postmaster@MYSUBDOMAIN', // generated ethereal user
            pass: 'MYPASSWORD'  // generated ethereal password
        },
        tls:{
          rejectUnauthorized:false
        }
      });

      // setup email data with unicode symbols
      let mailOptions = {
          from: '"Nodemailer Contact" <your@email.com>', // sender address
          to: '`${req.body.email}`', // list of receivers
          subject: 'Node Contact Request', // Subject line
          text: 'Hello world?', // plain text body
          html: output // html body
      };

      // send mail with defined transport object
      transporter.sendMail(mailOptions, (error, info) => {
          if (error) {
              return console.log(error);
          }
          console.log('Message sent: %s', info.messageId);   
          console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));

          // render view here and pass in data/message
      });
    });

然后是来自mailgun.com的域信息:

代码语言:javascript
复制
State
Unverified
IP Address
IPASSIGNED Manage IPs
SMTP Hostname
smtp.mailgun.org
Default SMTP Login
postmaster@MYSUBDOMAIN
API Base URL
https://api.mailgun.net/v3/MYSUBDOMAIN
Default Password
MYPASSWORD SMTP credentials
API Key
MYKEY
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-22 19:09:55

我想我应该更新这个答案来显示不同之处。我将端口从587更改为2525,因为我使用的是托管在谷歌服务器上的云9,它们的端口587被阻塞,但允许2525用于SMTP。其次,我将to电子邮件更改为设置为req.body.email的变量,即新用户的电子邮件。我的表格没有他们的名字,因为它是为( a)公司,b)这是更多的摩擦签约,并将稍微降低转换率。如果您的表单有它们的名称,请在模板字符串中使用它,我再次使用了它们的电子邮件。

代码语言:javascript
复制
app.post('/signup',
    setRedirect({auth: '/dashboard', success: '/dashboard', failure: '/signup'}),
    isUnauthenticated,
    registrations.postSignup,
    (req, res) =>{
      var newUserEmail = req.body.email;
      const output = `
        <h1>Your email is: ${req.body.email}</h1>
      `;

      // create reusable transporter object using the default SMTP transport
      let transporter = nodemailer.createTransport({
        host: 'smtp.mailgun.org',
        port: 2525,
        secure: false, // true for 465, false for other ports
        auth: {
            user: 'postmaster@MYSUBDOMAIN', // generated ethereal user
            pass: 'MYPASSWORD'  // generated ethereal password
        },
        tls:{
          rejectUnauthorized:false
        }
      });

      // setup email data with unicode symbols
      let mailOptions = {
          from: '"Nodemailer Contact" <your@email.com>', // sender address
          to: newUserEmail, // list of receivers
          subject: 'Node Contact Request', // Subject line
          text: 'Hello world?', // plain text body
          html: output // html body
      };

      // send mail with defined transport object
      transporter.sendMail(mailOptions, (error, info) => {
          if (error) {
              return console.log(error);
          }
          console.log('Message sent: %s', info.messageId);   

          // render view here and pass in data/message
      });
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46877779

复制
相关文章

相似问题

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