2017-01-22 5 views
0

Ich versuche, eine E-Mail-Kontaktseite auf meiner Heroku-Website mit Sendgrid einzurichten. Ich habe den Code mit dem Helfermailer und dem ohne ausprobiert; Beide können jedoch keine E-Mail an meine E-Mail-Adresse senden. Ich habe meinen sendgrid-API-Schlüssel als Variable in meinen heroku-App-Einstellungen hinzugefügt und auch den Benutzernamen und das Passwort importiert. Der E-Mail-Vorgang beginnt, wenn der Benutzer auf eine Schaltfläche klickt. Ich habe eine Aktion auf eine Post-Route innerhalb des Formular-Elements, und ich benutze Body-Parser, um die Eingabewerte vom Benutzer (Nachricht, ihre E-Mail-Adresse und ihre Nachricht) abrufen. Innerhalb meiner Post-Route rufe ich eine Funktion in meiner email.js-Datei auf, die den Code von sendgrid umschließt.Sendgrid-Knoten sendet keine E-Mail. Programm hat keine Fehlermeldungen

// Mein HTML mit Lenker.

<div class = "mainDiv" id = "sectionAbout"> 
      <h1 class="mainDivH1" id = "AboutMe">{{ ContactLi }}</h1> 
       <form action="/email" method="POST"> 
        <label for="fullName">{{ formName }}</label> <br><br> 
        <input type="text" name="fullName"> 
        <br> 
        <br> 
        <label for="subject">{{ formSubject }}</label> <br><br> 
        <input type="text" name="subject"> 
        <br> 
        <br> 
        <label for="email">{{ formEmail }}</label> <br><br> 
        <input type="text" name="email"> 
        <br> 
        <br> 
        <label for="message">{{ formMessage }}</label> <br><br> 
        <textarea rows="15" cols="80" type="text" name="message id="textbox"></textarea> 
        <br> 
        <br> 
        <button id="but" type="submit">Submit</button> 
       </form> 
     </div> 

// Der Code für die POST-Route

var email = require('../mail/email'); 

router.post('/email', function(req, res){ 
    var name = req.body.fullName; 
    var emSubject = req.body.subject; 
    var senderMail = req.body.email; 
    var message = name + " " + req.body.message; 

    var myEmail = '[email protected]'; 

    email.send(emSubject, senderMail, message, function(){ 
     res.redirect('/contact'); 
    }); 
}); 

//email.js

var helper = require('sendgrid').mail 
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY); 

var email = { 

    send: function(emSubject, senderMail, message, callback){ 

      var from_email = new helper.Email(senderMail); 
      var to_email = new helper.Email('[email protected]'); 
      var subject = emSubject; 
      var content = new helper.Content("text/plain", message); 
      var mail = new helper.Mail(from_email, subject, to_email, content); 

      var request = sg.emptyRequest({ 
       method: 'POST', 
       path: '/v3/mail/send', 
       body: mail.toJSON() 
      }); 
      console.dir("request"); 
      console.dir(JSON.stringify(request, null, 4)); 

      sg.API(request, function(error, response) { 
       if(error){ 
       console.log(error); 
       }  
       console.log(response.statusCode) 
       console.log(response.body) 
       console.log(response.headers) 
       callback(error); 
      }); 

    } 
} 

module.exports = email; 
+0

Es sind keine Fehler protokolliert? Führt das im sendgrid-Dashboard auf? –

Antwort

2

Sie haben erwähnt, dass Sie Ihre Sendgrid API-Schlüssel als env var hinzugefügt und importiert Ihr Benutzername und Passwort. Du solltest nichts davon tun müssen. Fügen Sie das Sendgrid-Add-on wie folgt zu Ihrem Heroku-Konto hinzu:

heroku addons:create sendgrid:starter