Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Decode a mail with MIME::Parser

by blahblahblah (Priest)
on Sep 03, 2002 at 04:11 UTC ( [id://194682]=note: print w/replies, xml ) Need Help??


in reply to Decode a mail with MIME::Parser

A simple regex that seems to always work for me for pulling the 'real' address out is this:
$from = $1 if $from =~ /<(\S+)>/;
If $from was "Usern name" test@test.dk, you'd wind up with 'test@test.dk'. If $from was just 'test@test.dk', it still would be since the regex wouldn't match.

As far as the problems of folding and multiple addresses in a field that jlongino pointed out, I think MIME::Head does a good job of taking care of the messiness of that for you. I have a script that used to do a lot of that manually, but I was always tweaking it for special cases that I'd never thought of. For example, addresses like "Name, User" <user@whatever> threw off my parsing of multiples because of the commas. And I started out thinking I only had to handle folding (wrapping onto multiple lines) for Subjects, but have now seen it in every header you mentioned, even the From header (The person had a very long user name in quotes). The perldoc is very long, but take a look at the 'get' and the 'unfold' methods to handle the problems of getting multiples and folding.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://194682]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2025-07-08 21:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.