簡體   English   中英

在Rails 3中的郵件攔截器中設置標頭

[英]Set header in mail interceptor in Rails 3

我想為所有郵件設置標題值。 我想在攔截器中執行此操作,因此不必重復所有郵件的代碼。

如果我在mailer函數中執行此操作,則代碼將如下所示,

headers['X-Mailgun-Campaign-Id'] = "1234"

但是如何使用攔截器實現相同的目的?

在ActionMailer攔截器中設置自定義標頭時,我遇到了類似的問題。 郵件程序中使用的標准語法不起作用:

def self.delivering_email(message)
  message.headers['X-Mailgun-Campaign-Id'] = "1234"
end

...,但是源代碼中提到的這種哈希樣式語法確實可以工作:

def self.delivering_email(message)
  message.headers 'X-Mailgun-Campaign-Id' => "1234"
end

萬一有人發現這個問題是為了尋找與我相同的答案,那就是如何覆蓋攔截器中的現有標頭,這就是我最終使用的答案。

message.header.fields.select{|f| f.name == 'X-Custom-Header' }
                     .each{|f| message.header.fields.delete(f) }

// these two following lines work equivalently in Rails 4:
message.headers['X-Custom-Header'] = "1234"
message.header 'X-Custom-Header' => "1234"

標頭內部存儲在數組中 ,而不是散列中,因此要“覆蓋”,必須首先完全刪除標頭。 否則,您的“替代”實際上只會添加另一個具有相同名稱的標頭,並且很難知道另一端將如何處理該標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM