簡體   English   中英

如何通過按鈕調用發帖請求? 節點快遞

[英]how to call a post request from button? node express

如何通過單擊按鈕調用控制器? 我試着去郵遞員,它很好用..但是我不能稱它為前端的按鈕。

我正在使用nodemailer和node express發送電子郵件。

這是我的代碼。

這個對嗎? - 提前致謝。

我正在弄清楚我的代碼是否正確。

mailController.js

// mail controller routes
var express = require('express');
var router = express.Router();
var nodemailer  = require('nodemailer');

// get /api/mail/
router.get('/send-email', (req,res) => {
  res.send('GET response');
});

// post /api/mail/
router.route('/send-email').post((req,res) => {
  let transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        type: 'OAuth2', 
        user: 'dev.xxx@gmail.com',
        clientId: 'xxx-xxx.apps.googleusercontent.com',
        clientSecret: 'SY0-xxxx',
        refreshToken: '1/xxx',
        accessToken: 'ya29.xxx-xxx-xxx-xxx'
      }
  })

  let mailOptions = {
    from: 'FReyes <dev.xxx@gmail.com>',
    to: 'xxx@gmail.com',
    subject: 'Nodemailer test',
    text: 'Hello World!!'
  }

  transporter.sendMail(mailOptions, function (err, res) {
    if(err){
      console.log('Error');
    } else {
      console.log('Email Sent');
    }
  })
});

// put /api/mail/
router.put('/send-email',(req,res) => {
  res.send('PUT response');
});

// delete /api/mail/
router.delete('/send-email',(req,res) => {
  res.send('DELETE response');
});

module.exports = router;

server.js

    var express     = require('express');
    var bodyParser  = require('body-parser');
    var nodemailer  = require('nodemailer');

    var app         = express(); // Please do not remove this line, since CLI uses this line as guidance to import new controllers

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

    app.use(function(req, res, next) {
      // console.log(req);
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Credentials', 'true');
      res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
      res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');

      //and remove cacheing so we get the most recent comments
      res.setHeader('Cache-Control', 'no-cache');
      next();
    });

    var mailController = require('./controllers/mailController');
    app.use('/api/mail', mailController);

    app.listen(process.env.PORT || 5015, () => {
      console.log('Server is running');
    });

contact.component.ts

  sendMail() {    
    const data = {
        to: 'xxx@gmail.com',
        subject: 'Subject',
        txt: 'hello world'
    };
    console.log('asd');
    return this.http.post('localhost:5015/api/mail/send-email', data).map((response: Response) =>{
      console.log (response.json());
    });
  }

html

<input type="button" value="test" (click)="sendMail(data)">

不要忘記在map函數中添加協議名稱和返回值

sendMail() {
  const data = {
    to: 'xxx@gmail.com',
    subject: 'Subject',
    txt: 'hello world'
  };
  console.log('asd');
  return this.http.post('http://localhost:5015/api/mail/send-email', data).subscribe(data => console.log(data));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM