Skip to content
This repository

ActionMailer headers fail encoding with complicated header name #377

Closed
ScotterC opened this Issue · 1 comment

2 participants

Scott Carleton Jeremy Kemper
Scott Carleton

Rails 3.2.2
Ruby 1.9.3-p0

class TestMailer < ActionMailer::Base

def test_email
  headers("o:tag" => "Test Email Tag"
  mail :to => "test@example.com"
end

end

fails with:
Encoding::ConverterNotFoundError: code converter not found (UTF-8 to Test Email Tag)
from .../gems/mail-2.4.4/lib/mail/fields/unstructured_field.rb:142:in encode!'
from .../gems/mail-2.4.4/lib/mail/fields/unstructured_field.rb:142:in
fold'

Works with
headers("o-tag" => "Test Email Tag"

Can be shown directly in gem environment with

Mail.new {headers("o:tag" => "test tag"); from 'test@fiendz.org'; to 'test@example.com'}

EDIT:

In this particular case, 'o:tag' has an equivalent for Mailgun's library of X-Mailgun-Tag. However, I feel that this should error out more gracefully, but it's certainly not a priority.

Jeremy Kemper
Collaborator

Using a colon in the header name is forbidden:

2.2. Header Fields

   Header fields are lines composed of a field name, followed by a colon
   (":"), followed by a field body, and terminated by CRLF.  A field
   name MUST be composed of printable US-ASCII characters (i.e.,
   characters that have values between 33 and 126, inclusive), except
   colon.

I'll add an ArgumentError when you assign an invalid header name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.