Попытка установить идентификатор сообщения, in-reply-to и т. Д. В ActionMailer - PullRequest
1 голос
/ 28 мая 2010

Я работаю над приложением, которое должно иметь возможность отправлять обновления по электронной почте и затем направлять ответ обратно на исходный элемент.

Все электронные письма будут приходить на один адрес (это не можетизменить, к сожалению), и мне нужно иметь возможность определить, куда они идут.Моей первоначальной мыслью было установить идентификатор сообщения для элемента, чтобы он возвращался в виде заголовка «Ссылки».

есть идеи, как этого добиться с помощью ActionMailer?

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

НАКОНЕЦ нашел его.

Первая проблема: ActionMailer вызывает функцию ready_to_send внутри TMail при отправке с использованием smtp, которая, в свою очередь, вызывает функцию add_message_id, которая переопределяет все, что вы туда поместили.

Решение: в TMail есть недокументированный (насколько я могу судить) метод с именем enforced_message_id=(val). использование этого INSTEAD для message_id гарантирует, что add_message_id не перезапишет ваши значения. Например, вы могли бы:

mail = MyMailer.create_mail_function(values)
mail.enforced_message_id = '<my_not_proper_message_id>'
MyMailer.deliver(mail)

Вы должны быть осторожны с этим, потому что message_id может быть хитрым. Они должны быть уникальными и действительными. Я предполагаю, что есть причина, по которой TMail немного усложнил переопределение значения по умолчанию.

Надеюсь, это спасет кого-то от потраченного впустую дня (судя по опыту здесь; -)

0 голосов
/ 11 августа 2011

Обратите внимание, что inspected_message_id предназначен только для TMail> = 1.2.7 (поставляется с Rails> = 2.3.6). Функция не существует для Tmail <= 1.2.3 (для Rails <= 2.3.5). Обходной путь для Rails 2.3.6 - изменить add.message_id net.rb следующим образом: </p>

def add_message_id( fqdn = nil )
  self.message_id = ::TMail::new_message_id(fqdn) if self.message_id.nil?
end

Это копия "вендора" TMail в ActionMailer в вашей установке Rails. (Найти корень установки Rails, используя "gem environment").

...