2016-03-03 4 views
0

Я обрабатываю сообщения электронной почты из моего приложения rails с помощью почтового ящика Mailman. Я следовал за Railcasts hereКак получить атрибут «Reply-To» из электронной почты с помощью mailman (Rails)?

В этом Railscasts Райан Бэйтс показал, как получить Субъект и контент из полученного нами электронного письма, и я мог бы это сделать просто отлично.

Но теперь я хочу извлечь другой атрибут из письма, а именно атрибут «Reply-To». Итак, как я мог это сделать?

Я пытался сделать это так: message.Reply-to, но я получил

undefined method `Reply' for #<Mail::Message:0x007fc0fd641890> (NoMethodError) 

, когда я попытался проверить его. Ниже приведен скриншот сообщения об ошибке полной:

enter image description here

Ниже мой mailman_server файл:

#!/usr/bin/env ruby 
require "rubygems" 
require "bundler/setup" 
require "mailman" 

#Mailman.config.logger = Logger.new("log/mailman.log") 

Mailman.config.pop3 = { 
    server: 'pop.gmail.com', port: 995, ssl: true, 
    username: "[email protected]", 
    password: "xxxxx" 
} 

Mailman::Application.run do 
    default do 
    puts "Received: #{message.Reply-To}" 
    end 
end 

Ниже мой mailman_test.eml файл:

Date: Fri, 25 February 2016 
From: [email protected] 
Subject: Mailman Test 
To: [email protected] 
Reply-To: [email protected] 
+0

define: 'not working' – Ecnalyr

+0

@ Ecnalyr Я получил 'undefined method' Reply 'для (NoMethodError) ' –

+0

Вы пытались получить к нему доступ по ключу? Очевидно, что 'Reply-To' не является допустимым символом Ruby. Альтернативно, API, вероятно, имеет доступ к заголовкам. –

ответ

2

mailman драгоценный камень внутренне использует Mail::Message при обработке входящей почты.

Итак, у вас есть доступ ко всем методам Mail::Message в вашем распоряжении. Одним из таких методов является reply_to. Поэтому вы можете попробовать message.reply_to.

Для получения дополнительной информации см. Mail::Message Documentation.