node.js - 带 Mailgun 的 Nodemailer

标签 node.js email express mailgun nodemailer

我尝试在用户注册我的网站时发送电子邮件。我决定使用 Nodemailer 和 MailGun,并意识到没有太多关于它们协同工作的教程或好的文档。对于 MailGun 等其他服务来说,似乎也存在类似的问题。下面是我尝试让它工作的代码。我看了一个关于让它工作的教程,但似乎无法弄清楚。我认为代码是正确的,但也许身份验证是错误的?或者我可以两者都放弃。我在开发环境中使用 cloud9.io,所以也许这就是问题所在?或者我的域名尚未验证?

路线:

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的域名信息:

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

最佳答案

我想我应该更新这个答案以显示差异。我将端口从 587 更改为至2525因为我使用的是托管在 Google 服务器上的 cloud 9,它们有端口 587已阻止但允许 2525对于 SMTP。其次我改变了 to发送电子邮件至我设置为 req.body.email 的变量这是新用户的电子邮件。我的表格没有他们的名字,因为它适用于 a) 公司 b) 注册时会遇到更多摩擦,并且转化率会稍微降低。如果您的表单有他们的名字,请在我再次使用他们的电子邮件的模板字符串中使用该名称。

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
      });
    });

关于node.js - 带 Mailgun 的 Nodemailer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877779/

相关文章:

javascript - 使用 PHP 和 Jquery 将表单输入字段添加到电子邮件

java - Spring MimeMessageHelper 附件文件名编码

node.js - React-Facebook-Login 和 Node.js Express

javascript - 一个对象怎么可能是不可修改的呢?

node.js - mongo/Node 类型错误: callback is not a function on query

azure - 使用 powershell、cmd 或 python 自动创建 M365 Outlook 配置文件

Node.js Express 4.11.2 & socket.io 出现错误?EIO=3&transport=polling&t=

angularjs - Passport 身份验证成功但不重定向并给出 500 错误

javascript - 在 Node.js 中连接或合并文件的最佳方法

node.js - require 中的 Node js : Why module. Exports = tesdf() 仅在 get 请求中执行一次