эрланг мим добраться до поля - PullRequest
1 голос
/ 11 марта 2011

Я пытаюсь получить поле TO: 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).

Если у меня короткое сообщение, например: https://gist.github.com/865910 Я получил io:format(Sep1) https://gist.github.com/865905, все нормально, без :

Но если у меня длинное сообщение с вложением: - https://gist.github.com/865914 Я получилв io:format(Sep1) - https://gist.github.com/865906 все остается таким же, как было с :

Что не так?Почему при обычном синтаксическом анализе сообщения и большом сообщении не выполняется синтаксический анализ?

Когда я пытаюсь использовать регулярное выражение:

List = binary_to_list(Binary),
re:run(List, "^To: (.)*$", [multiline, {capture, all_but_first, list}]).

Я получаю только {match, ["m"]}

Почему?

Спасибо.

1 Ответ

2 голосов
/ 11 марта 2011

Попробуйте регулярное выражение:

1> Data = <<"...">> % Your long message
<<"...">>
2> re:run(Data, <<"^To: (.*)$">>, [multiline, {capture, all_but_first, binary}]).
{match,[<<"shk@shk.dyndns-mail.com">>]}
...