与MainGun的Nodemailer

当用户注册到我的网站时,我试图发送电子邮件。 我决定在Nodemailer和MailGun,并认识到没有很多教程或好的文档,他们一起工作。 对于像MailGun这样的其他服务似乎是一个类似的问题。 下面是我的代码试图让它工作。 我看了一个关于让它工作的教程,但似乎无法弄清楚。 我认为代码是正确的,但也许authentication是错误的? 或者我可以在两个都失败。 我为我的开发环境使用cloud9.io所以也许这是问题? 或者说我的域名尚未validation?

路线:

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因为我使用的是托pipe在Google服务器上的云9,并且端口587被阻止,但是允许SMTP 2525 。 其次我改变了电子邮件到一个variables我设置为req.body.email这是新用户的电子邮件。 我的表单没有他们的名字,因为它是为了a)公司b)注册更多的摩擦,将略低的转换率。 如果你的表单有他们的名字,那么在我再次使用他们的电子邮件的模板string中。

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