1

Ich möchte eine Benachrichtigungs-E-Mail in meiner Anwendung senden und ich versuche, sendgrid zu verwenden. Meine Anwendung ist in CoffeeScript geschrieben.Sendgrid Ersetzungen Tags

enter code here 
from_address = '[email protected]' 
subject = 'This Is The Subject' 
html_body = '<table style="font-family: verdana, tahoma, sans-serif; color: #000;"> 
      <tr> <td> 
      <h2>Hello,</h2> <p>Hello!!</p> 
          <p>%%name%% %%surname%% send you a message</p> 
      </table>' 
sendgrid = require('sendgrid')(api_key) 
Email = sendgrid.Email 
email = new Email(
    to: to_address 
    from: from_address 
    subject: subject 
    text: text_body 
    html: html_body) 

recipients = [ 
    '[email protected]' 
    '[email protected]' 
] 
i = 0 
while i < recipients.length 
    email.addTo recipients[i] 
    i++ 

substitutions = { 
    "%%name%%": [ 
    "name1", 
    "name2" 
    ], 
    "%%surname%%": [ 
    "surname1", 
    "surname2" 
    ] 
} 

for tag in substitutions 
    email.addSubstitution(tag, substitutions[tag]) 

email.setFilters({ 
    "templates": { 
    "settings": { 
     "enable": "1", 
     "template_id": "XXXXXX-XXX-XXXX-XXXX-XXXXXXXXXX" 
    } 
} 
}) 


sendgrid.send email, (err, json) -> 
    if err 
    return console.log(err) 
    console.log json 
return 

Wenn ich den Code ausführen, senden Sie mir die E-Mail an die E-Mail-Adresse. Aber die Nachricht ist:

Hallo !!

%% name %% %% Nachname %% Ihnen eine Nachricht senden.

Die Substitution funktioniert nicht. Ich versuche %% für%, - und # zu ändern. Aber irgendetwas davon scheint zu funktionieren. Auch ich versuche setSections.

aktualisiert

Dies ist das sendgrid Objekt i Senden ist.

{ to: [ '[email protected]', '[email protected]' ], 
    from: '[email protected]', 
    smtpapi: 
    { version: '1.2.0', 
    header: 
     { to: [], 
     sub: {}, 
     unique_args: {}, 
     category: [Object], 
     section: {}, 
     filters: [Object], 
     send_at: '', 
     send_each_at: [], 
     asm_group_id: {}, 
     ip_pool: '' } }, 
    subject: 'This Is The Subject', 
    text: 'Hello!\n\nThis is a test message from SendGrid. We have sent this to you because you requested a test message be sent from your account.\n\n This is a link to google.com: http://www.google.com\n This is a link to apple.com: http://www.apple.com\n This is a link to sendgrid.com: http://www.sendgrid.com\n\n Thank you for reading this test message.\n\nLove,\nYour friends at SendGrid', 
    html: '<table style="font-family: verdana, tahoma, sans-serif; color: #000;"> <tr> <td> <h2>Hello,</h2> <p>Hello!!</p> <p>%%name%% %%surname%% send you a message</p> </table>', 
    bcc: [], 
    cc: [], 
    replyto: '', 
    date: '', 
    headers: {}, 
    toname: undefined, 
    fromname: undefined, 
    files: [] } 

Was mache ich falsch?

Vielen Dank im Voraus.

+0

Können Sie ausdrucken, wie das sendgrid-Objekt aussieht? Es sieht so aus, als würden Sie die Ersetzungen im 'x-smtpapi'-Header nicht richtig hinzufügen, aber die ganze Sache wäre hilfreich. – jacobmovingfwd

+0

Hallo, @jacobmovingfwd Ich habe das sendgrid-Objekt kurz vor der sendgrid.send-Methode hinzugefügt. Danke für Ihre Hilfe. – jasc

+0

Niemand weiß, welches das Problem sein könnte? – jasc

Antwort

0

Ich beantworte meine eigene Frage, weil bereits das Problem gefunden.

Das Problem wurde nicht mit Sendgrid, sondern mit coffeeScript verwandt. In einem meiner Aussage verwende ich dies:

for tag in substitutions 
    email.addSubstitution(tag, substitutions[tag]) 

ich hier versuchen, die E-Mail-Objekt die Ersetzungen Tag hinzuzufügen. Aber beim Debuggen meines Codes fand ich, dass die Schleife nicht über die Substitutionsvariable iterierte. Daher wurde ein beliebiges Tag zum E-Mail-Objekt hinzugefügt.

Ich habe den vorherigen Code für diese Änderung:

Object.keys(substitutions).forEach((tag)-> 
    email.addSubstitution(tag, sub[tag]) 
    return 

Und mit dieser Änderung der Substitutionen Tags wurde das E-Mail-Objekt hinzugefügt.