Как мне разобрать текст из тела письма с помощью приложения Rails3? - PullRequest
0 голосов
/ 18 мая 2011

Мне нужно получить имя и адрес электронной почты из перенаправленного электронного письма, где в теле есть строка, подобная этой:

From: john smith <sales@domain.com>

Каков наилучший способ сделать это? Есть ли хорошая библиотека / гем, который я должен использовать?

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

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

1 Ответ

2 голосов
/ 19 мая 2011
require 'mail'  # only needed for non-Rails
m = Mail.new( "any RFC-conforming email including headers" )
puts m[:from].display_names.first
puts m[:from].addresses.first

Объект Mail автоматически включается в проекты Rails, использующие ActionMailer - но вам нужно будет добавить его в Gemfile, если вы не используете ActionMailer

Обновление

Я не прочитал вопрос ОП должным образом - они хотят получить адрес электронной почты из тела пересылаемой почты. Я бы просто использовал регулярное выражение:

name, email = m.body.match( /^\s*From:\s*(.*)\s+<(.*)>$/)[1,2]

Примечание: это предполагает значительную сумму в структуре электронной почты - электронное письмо только для HTML может легко помешать этому регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...