Sto utilizzando Send2Dir SMTP API nella mia applicazione Rails per inviare e-mail. Tuttavia, sto incontrando problemi nell'intestazione dell'e-mail ("X-SMTPAPI") usando RSpec.Come testare le intestazioni delle e-mail usando RSpec
Ecco cosa l'email si presenta come (recuperando da ActionMailer :: Base.deliveries):
#<Mail::Message:2189335760, Multipart: false, Headers:
<Date: Tue, 20 Dec 2011 16:14:25 +0800>,
<From: "Acme Inc" <[email protected]>>,
<To: [email protected]>,
<Message-ID: <[email protected]>>,
<Subject: Your Acme order>, <Mime-Version: 1.0>,
<Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>,
<X-SMTPAPI: {"sub":{"|last_name|":[Foo],"|first_name|":[Bar]},"to":["[email protected]"]}>>
Ecco il mio codice spec (che non):
ActionMailer::Base.deliveries.last.to.should include("[email protected]")
Ho anche provato vari metodo per recuperare l'intestazione ("X-SMTPAPI") e non ha funzionato neanche:
mail = ActionMailer::Base.deliveries.last
mail.headers("X-SMTPAPI") #NoMethodError: undefined method `each_pair' for "X-SMTPAPI":String
Aiuto?
Update (risposta)
scopre, posso fare questo per recuperare il valore dell'intestazione e-mail:
mail.header['X-SMTPAPI'].value
Tuttavia, il valore restituito è in formato JSON. Poi, tutto quello che devo fare è di decodificarlo:
sendgrid_header = ActiveSupport::JSON.decode(mail.header['X-SMTPAPI'].value)
che restituisce un hash, dove posso fare questo:
sendgrid_header["to"]
per recuperare la matrice di indirizzi di posta elettronica.
Grazie. Ho controllato la gemma email_spec. Il matcher "deliver_to" è simile al matcher "to" (che restituisce "[email protected]" invece di "[email protected]") e il matcher "have_header" restituisce semplicemente l'intestazione completa. Ad ogni modo, ho trovato una soluzione e la pubblicherò ora. Grazie! –