Sendgrid и AWS лямбда-форма - PullRequest
       7

Sendgrid и AWS лямбда-форма

0 голосов
/ 04 сентября 2018

Я пытаюсь настроить супер базовую форму электронной почты, используя Sendgrid и AWS Lambda. У меня проблемы с отправкой данных из формы в функцию Lambda. Я получаю ошибку «Неожиданный токен в JSON в позиции 0». Я знаю, что это как-то связано с тем, как я посылаю тело. Ниже приведен мой код для моей лямбда-функции.

require("dotenv").config();
const sendgrid = require('@sendgrid/mail');

exports.handler = (event, context, callback) => {
sendgrid.setApiKey(process.env.SENDGRID_API_KEY);
var data = JSON.parse(event.body);
const msg = {
    to: data.to,
    from: 'test@gmail.com',
    subject: data.subject,
    text: data.message,
};
sendgrid.send(msg);
callback(null, 'Message Sent');
}

Вот Javascript для моей формы.

$(document).ready(function() {

$("#submit").click(function(e) {
    e.preventDefault();

    var to = $("#to").val();
    var subject = $("#subject").val();
    var message = $("#message").val();

    var data = {
        'to': to,
        'subject': subject,
        'message': message
    }

    $.ajax({
        type: "POST",
        url: 'https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/xxxxx',
        contentType: 'application/json',
        data: JSON.stringify({data}),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        success: function(res){
            console.log('Email was sent.');
        },
        error: function(){
            console.log('Error.');
        }
    });

})

});

Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Проблема в том, что вы пытаетесь проанализировать объект JSON, а не строку.

var data = JSON.parse (event.body);

Это не правильно. Просто назначьте,

var data = event.body;

Оттуда следует позаботиться.

Надеюсь, это поможет.

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