一旦部署在heroku上,如何通过带有角和节点的表单输入发送电子邮件?

时间:2018-07-18 04:40:22

标签: node.js angular heroku sendgrid

我在heroku上部署了一个应用,该应用的前端是角形的,而node(express)是后端。在联系页面上,我有一个表单,一旦按下发送按钮,该表单将通过电子邮件发送,然后通过HTTP将信息发送到节点,以便用户输入通过节点功能传递-我正在使用{{1 }}电子邮件流程的附件,用于发送电子邮件。我尝试了很多次,但是我无法使它正常工作,也找不到带有角度的教程。它以前在SendGrid上与nodemailer一起工作过,但是一旦部署,我就无法弄清楚。非常感谢您的宝贵时间。

节点代码app.js

localhost

注册用户输入,然后将其发送到节点(并进行一些验证,感兴趣的是最后一行)的函数contact.component.ts

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const sgMail = require('@sendgrid/mail');


const port = process.env.PORT || 3000;

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.use(express.static(path.join(__dirname, 'client')));

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'client/index.html'));
});

app.post('/client-contact', (req, res) => {

const clientMsg = `
<p> Email sent from your portfolio website</p>
<h3>Contact details</h3>
<ul>
    <li>Name ${req.body.name}</li>
    <li>Email: ${req.body.email}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;

sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: 'mrwanzein@outlook.com',
  from: 'mrwanzein@outlook.com',
  subject: 'Angular portfolio form user response',
  html: clientMsg,
};

sgMail.send(msg);

});


app.listen(port, () => {
  console.log(`Server is on on port ${port}`);
});

2 个答案:

答案 0 :(得分:0)

您需要为您的应用程序配置SMTP服务器。

最简单的方法是使用heroku插件,例如mailgun

答案 1 :(得分:0)

我修复了它,基本上代码没问题,我不得不删除sgMail.send(msg)周围的res.send(),当我更改它时,我忘了ng build(angular)来更新HTTP地址。我正在推送对仓库的更改,而没有缺少更新的代码,哦,亲爱的...:P