Получение сетевой ошибки после попытки отправки электронной почты с использованием Sendgrid - PullRequest
0 голосов
/ 04 декабря 2018

Я беру курсы MERN-стека, я хотел бы отправлять электронные письма, используя Sengrid. В моем клиентском приложении пользователь предоставит заголовок, текст, тему и в поле получателей список электронной почты, разделенный запятой,и бэкэнд использует экспресс для обработки входящего HTTP-запроса POST перед отправкой его в API SendGrid. Вот мой код в Express:

Mailer.js

const sendgrid=require('sendgrid');
const helper=sendgrid.mail;
const keys=require('../config/keys');

class Mailer extends helper.Mail{
    constructor({subject,recipients},content){
        super();
        this.sgApi=sendgrid(keys.sendGridKey);
        this.from_email=new helper.Email('no-reply@emaily.com');
        this.subject=subject;
        this.body=new helper.Content('text/html',content);
        this.recipients=this.formatAddresses(recipients);

        this.addContent(this.body);
        this.addClickTracking();
        this.addRecipients();
    }

    formatAddresses(recipients){
        return recipients.map(({email})=>{
            return new helper.Email(email);
        });
    }

    addClickTracking(){
        const trackingSettings=new helper.TrackingSettings();
        const clickTracking=new helper.ClickTracking(true,true);

        trackingSettings.setClickTracking(clickTracking);
        this.addTrackingSettings(trackingSettings);
    }

    addRecipients(){
        const personalize=new helper.Personalization();
        this.recipients.forEach(recipient=>{
            personalize.addTo(recipient);
        });
        this.addPersonalization(personalize);
    }

    async send(){
        const request=this.sgApi.emptyRequest({
            method:'POST',
            path:'/v3/mail/send',
            body:this.toJSON()
        });
        const response=this.sgApi.API(request);
        return response;
    }

}

module.exports=Mailer;

The route

const mongoose=require('mongoose');
const requireLogin=require('../middlewares/requireLogin');
const requireCredits=require('../middlewares/requireCredits');
const Mailer=require('../services/Mailer');
const surveyTemplate=require('../services/emailTemplates/surveyTemplate');

const Survey=mongoose.model('surveys');

module.exports=app=>{
    app.post('/api/surveys',requireLogin,requireCredits,async(req,res)=>{
        const { title,subject,body,recipients }=req.body;
        const survey=await new Survey({
            title,
            body,
            subject,
            recipients:recipients.split(',').map(email=>({email})),//for every email string got after spliting,we create an object of key string and value of whatever email
            _user:req.user.id,
            dateSent:Date.now()
        });
        const mailer=new Mailer(survey,surveyTemplate(survey));
        mailer.send();
    });
}

Когда я пытаюсь отправить, через 4 или 5 минут я получаюследующая ошибка Browser debugger windows

На компьютере преподавателя код точно такой же, как у меня, но я не знаю, почему мой код работает не так, как ожидалось

...