[英]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.