2016-07-28 18 views
1

In Meteor-Anwendung, die SendGrid-Transaktions-E-Mail-Vorlagen für Benutzereinladungen und Benachrichtigungen enthält, kann ich ersetzen Ersatz Tags nicht. E-Mails mit Vorlagen werden empfangen, jedoch ohne Unterschied.Sengrid Vorlage Ersatz Tags nicht ersetzt beim Senden von E-Mail in Meteor App

Email.send({ 
    from: "[email protected]", 
    to:email, 
    subject: "Subject", 
    sub: { 
     "{name}":post.createdBy, 
     "{title}":post.title, 
    }, 
    headers: { 
     "X-SMTPAPI": { 
     "filters": { 
      "templates": { 
      "settings": { 
       "enable": 1, 
       "template_id": "xxxx" 
      } 
      } 
     } 
     }, 
     "Content-Type" : "text/html" 
    } 
}); 

Ich bin nicht mit API direkt, sondern Meteor E-Mail-Paket, aber nicht sehen, dass mögliche Ausgabe:

Meteor.startup(function() { 
    process.env.MAIL_URL = 'smtp://username:[email protected]:587'; 
}); 

Dies ist meine verkürzte E-Mail-Vorlage:

Hey {name}, 

    your post {title} has a new comment. 

Antwort

0

Was ich am Ende tun wurde mit smtpapi-nodejs NPM-Paket.

würde das einfache Beispiel sein:

var nodemailer = require('nodemailer'); 
var smtpapi = require('smtpapi'); 

var header = new smtpapi(); 

header.setFilters({ 
    "templates": { 
     "settings": { 
     "enable": 1, 
     "template_id": xxx-template-id-xxx 
     } 
    } 
}); 

header.addSubstitution('-name-', post.createdBy); 
header.addSubstitution(-title-', post.title); 

var headers = { 'x-smtpapi': header.jsonString() }; 

// Use nodemailer to send the email 
var settings = { 
    host: "smtp.sendgrid.net", 
    port: parseInt(587, 10), 
    requiresAuth: true, 
    auth: { 
    user: "sendgrid_username", 
    pass: "sendgrid_password" 
    } 
}; 
var smtpTransport = nodemailer.createTransport(settings); 

var mailOptions = { 
    from:  "Fred Foo <[email protected]>", 
    to:  "[email protected]", 
    subject: "Hello", 
    text:  "Hello world", 
    html:  "<b>Hello world</b>", 
    headers: headers 
} 

smtpTransport.sendMail(mailOptions, function(error, response) { 
    smtpTransport.close(); 

    if (error) { 
    console.log(error); 
    } else { 
    console.log("Message sent: " + response.message); 
    } 
}); 
1

Sie müssen die sub s auch in den Header X-SMTPAPI setzen. Der X-SMTPAPI-Header selbst sollte auch gültige JSON in einer Zeichenfolge enthalten.

Versuchen Sie folgendes:

var xsmtpapi = { 
    "filters": { 
    "templates": { 
     "settings": { 
     "enable": 1, 
     "template_id": "xxxx" 
     } 
    } 
    }, 
    "sub": { 
    "{name}": post.createdBy, 
    "{title}": post.title 
    } 
} 

Email.send({ 
    from: "[email protected]", 
    to:email, 
    subject: "Subject", 
    sub: { 
     "{name}":post.createdBy, 
     "{title}":post.title, 
    }, 
    headers: { 
     "X-SMTPAPI": JSON.stringify(xsmtpapi), 
     "Content-Type" : "text/html" 
    } 
}); 
+0

Leider, das nicht funktioniert. Ich benutze nur - http://docs.meteor.com/api/email.html – mhlavacka

+0

Aber wenn das Sub-in X-SMTPAPI E-Mail wurde nie verarbeitet. – mhlavacka

+0

Verstanden. Sie müssen das gesamte JSON-Objekt als Zeichenfolge übergeben. – bwest