2016-04-24 4 views
0

Ich habe die sendgrid-ruby Edelstein zum Senden von E-Mails über SendGrid implementiert. Ich verwende Vorlagen ausschließlich für meine zu sendenden Nachrichten. Ich habe alles auf der Outbound-Seite mit der TemplateMailer-Implementierung arbeiten.Wie übergebe ich unique_args an die SendGrid :: TemplateMailer API von Ruby on Rails

Dies ist der Code:

unique_args = {unique_args: {MyAuditNumber: "9999999"}} 

    # Create a sendgid recipient list 
    recipients = [] 

    recipient = SendGrid::Recipient.new(to_email) 
    merge_vars.each do |mv| 
     Rails.logger.debug(mv) 
     recipient.add_substitution('*|' + mv["name"] + '|*', mv["content"]) 
    end 

    recipients << recipient 

    # Create a sendgrid template 
    template = SendGrid::Template.new(template_id) 

    # Create a client 
    client = SendGrid::Client.new(api_key: Rails.configuration.sendgridkey) 
    mail_defaults = { 
     from: from_email, 
     from_name: from_name, 
     to: to_email, 
     to_name: to_name, 
     bcc: bcc, 
     html: ' ', 
     text: ' ', 
     subject: subject 
    } 

    mailer = SendGrid::TemplateMailer.new(client, template, recipients)   

    # send it 
    lres = mailer.mail(mail_defaults) 

Das letzte, was ich tun möchte, ist eine eindeutige Kennung für jede Nachricht hinzuzufügen, die ich sende.

ich gelesen habe sowohl die SendGrid Dokumentation sowie mehrere Fragen und andere Artikel ( how to get response of email sent using sendgrid in rails app to save in database http://thepugautomatic.com/2012/08/sendgrid-metadata-and-rails/ https://sendgrid.com/docs/Integrate/Code_Examples/SMTP_API_Header_Examples/ruby.html )

Ich kann sagen, dass ich brauche unique_args an den SMTP-API hinzuzufügen. Aber was ich nicht herausfinden kann ist, wie man das in die SendGrid-Routinen übergibt.

Ich habe versucht, Dinge wie:

recipient.add_to_smtpapi(unique_args) 

und

recipient.add_to_smtpapi(unique_args.to_json) 

und

mail_defaults = { 
    smtpapi: unique_args, 
    from: from_email, 
... 

und

mail_defaults = { 
    smtpapi: unique_args.to_json, 
    from: from_email, 
    ... 

Diese Versuche führen im Allgemeinen zu einer Fehlermeldung wie: nicht definierte Methode `add_filter‘ für "{\" unique_args \ ": {\" MyAuditNumber \ ": \" 9999999 \ "}}": String

Weiß jemand, Wie übergebe ich unique_args bei Verwendung des TemplateMailer?

Antwort

1

Basierend auf gem documentation, was Sie tun sollten, ist die folgende:

header = Smtpapi::Header.new 
header.add_unique_arg("MyAuditNumber", "9999999") 
mail_defaults = { 
    smtpapi: header 
    ...