LINUX.ORG.RU

  Я, конечно, не программист на перле, но нафиг для этого модуль?

#!/usr/bin/perl -w

sub parse_email
# Возвращает ссылку на хэш с заголовками (ключи приведены к нижнему регистру) и тело письма.
# Заголовки на несколько строчек объединяются в одну (без переносов строки).
# В случае повторяющихся заголовков выживет только один :) Но тут уж ничего не поделаешь, хэш.
# Иначе искать нужный заголовок придётся через задницу.
{
  my $mail = shift;
  my @strings = split /\n/, $mail;
  my @headers = ();
  while(my $str = shift @strings)
    {
    if( $str =~ /^\s/)
        { $headers[-1] .= $str }
      else
        { push @headers, $str }
    }

  my $pheaders = {};
  for(@headers)
    {
    if(/^([\w\-]+)\s*:\s*(.*?)\s*$/)
        { $pheaders->{"\L$1"} = $2 }
      else
        { die "Bad header $_" }
    }
  return $pheaders, join "\n", @strings
}

# Пример использования:

$mailtext=<<END;
From: me
To: you
Received: from one
    by two
SuBjeCT: Hi

  Hello, stupid!
  Nice to meet you
END

my ($pheaders, $body) = parse_email($mailtext);

if(defined $pheaders->{'subject'})
    { print 'Subject: ', $pheaders->{'subject'}, "\n" }
  else
    { print "No subject defined\n" }

print "----------------------------\n";
print $body, "\n"

# Эх, до чего безделье доводит...

Teak ★★★★★
()
Ответ на: комментарий от Teak

ну, если приходит мейл с аттачем(-ми), то я хотел этот(-ти) аттач(-и) выудить... вот чего искал. А самому писать неохота.

vilfred ☆☆
() автор топика

Мне больше Mail::Box нравится.

roller ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.