Parsing erlang mime到达字段

Parsing erlang mime到达字段,parsing,erlang,mime,Parsing,Erlang,Mime,我试图做到:user@mail.com来自mime邮件消息的字段 我有密码: parse_to(Data) -> List = string:tokens(Data, ":"), Sep1 = lists:map(fun(H) ->string:tokens(H, ":") end, List), io:format(Sep1), Sep2 = lists:filter(fun ([K | _]) -> K == "To" end, Sep1),

我试图做到:user@mail.com来自mime邮件消息的字段

我有密码:

parse_to(Data) ->
    List = string:tokens(Data, ":"),
    Sep1 = lists:map(fun(H) ->string:tokens(H, ":") end, List),
    io:format(Sep1),
    Sep2 = lists:filter(fun ([K | _]) -> K == "To" end, Sep1),
    ListAddress = lists:append(Sep2),
    [_ | Tail] = ListAddress,
    lists:map(fun(Address) -> string:tokens(Address, ",") end, Tail).
例如,如果我有短信: 我进入了
io:format(Sep1)
,没有一切都可以:

但如果我有长消息和附件:- 我进入了
io:format(Sep1)
-一切都和一样:

怎么了?为什么短消息正常解析而大消息未解析

当我尝试使用regexp时:

List = binary_to_list(Binary),
re:run(List, "^To: (.)*$", [multiline, {capture, all_but_first, list}]).
我只得到
{match,[“m”]}

为什么?


谢谢。

试试正则表达式:

1> Data = <<"...">> % Your long message
<<"...">>
2> re:run(Data, <<"^To: (.*)$">>, [multiline, {capture, all_but_first, binary}]).
{match,[<<"shk@shk.dyndns-mail.com">>]}
1>数据=%n您的长消息
2> re:run(数据,[multiline,{capture,除_优先外的所有_,binary}])。
{match,[]}

必须使用点星(.*)外侧的括号,否则只能匹配第一个字符。