Не удается получить ajax данные формы для отправки с помощью nodemailer - PullRequest
0 голосов
/ 04 августа 2020

Доброе утро всем, я сделал веб-приложение, используя node.js и express. У меня есть Nodemailer для отправки электронного письма, и мой AJAX отправляет проанализированные данные JSON на express, но у меня возникают проблемы с получением их из данных в nodemailer. Мой Ajax отправляет JSON на express. Я подтвердил это с помощью инструментов DEV, но я не понимаю, как поместить JSON в nodemailer. Любая помощь будет принята с благодарностью.

/* contact Route: contact.js */
var express = require('express');
const contact = express.Router();
var path = require('path');
const bodyParser = require('body-parser');
var nodemailer = require('nodemailer');

contact.use(bodyParser.json() );
contact.use(express.static(__dirname + 'portfolio'));

contact.get('/contact',  (req,res,next) => {
  res.sendFile(path.join(__dirname, '../html-files', 'contact.html'));
  console.log('this works');
});



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



  /*const data = req.body.data;
const from = data.email;
const text = data.message;*/


  var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: 'augustshah@02pilot.com',
      pass: 'hgahalzecelxdxis'
    }
  });
  
  var mailOptions = {
    from: this.email,
    to: 'augustshah@02pilot.com',
    subject: 'Quote',
    text: this.message
  };
  
  transporter.sendMail(mailOptions, function(error, info){
    if (error) {
      console.log(error);
    } else {
      console.log('Email sent: ' + info.response);
    }
  });
  
})







module.exports = contact;



/* Jquery: script.js*/
//const { json } =  require("body-parser");
//var requirejs = require('requirejs');
//const { json } = require("body-parser");




$('#submit').on('click', function(e) {
    e.preventDefault(); 

    const name = $("#name").val();
    const email = $("#email").val();
    const message = $("#message").val();
    
    var $form = $( this ),
    url = $form.attr( "action", "/contact");

    const data = {
        name: name, 
        email: email,
        message: message
    };
    
    $.ajax({
        type: "POST", // HTTP method POST or GET
        url: "/contact", //Where to make Ajax calls
        dataType: "json", // Data type, HTML, json etc.
        data: JSON.stringify(data), //Form variables
        success: function() {
             alert("Your Email has been sent");
        },
        error: function() {
            alert("Your Email has not sent. Try Again. ");
        }
    
    })

    
}); 

1 Ответ

0 голосов
/ 04 августа 2020

ИСПРАВЛЕНО: Это было просто. в моем скрипте. js, у меня не был установлен contentType. Я установил для него значение «application / json», и это устранило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...