在Erlang中使用电子邮件(POP3,IMAP,SMTP e.t.c)?

时间:2011-05-10 09:33:04

标签: erlang mnesia yaws nitrogen

如何在Erlang / OTP中实际处理与电子邮件相关的通信? 使用bash,python或Perl脚本,可以发送电子邮件。但是,在Erlang中,我还没有找到专门用于代表其他应用程序发送和/或接收电子邮件的应用程序或内置函数。
yaws 中,有一个邮件应用程序位于Web服务器的应用程序路径中。但是,在yaws主页上,没有专用于此应用程序的文档。在 Nitrogen Web framework 中,就电子邮件协议而言,我发现没什么用处。
如果有人知道我可以用来实际发送和/或接收邮件的图书馆,请指导我。也可能有非官方的实现,我不知道。 谢谢,提前

2 个答案:

答案 0 :(得分:3)

我已成功使用smtp_fsm.erl发送电子邮件(不完全是此版本,但此版本可公开访问)。

快速搜索显示了其他一些与smtp和电子邮件相关的软件包,但我没有任何相关经验。

答案 1 :(得分:1)

如果您想使用Erlang 发送电子邮件,请查看交易电子邮件服务AlphaMail

以下是如何使用AlphaMail module for Erlang发送电子邮件的示例:

Service = alphamail:email_service("YOUR-ACCOUNT-API-TOKEN-HERE").
Payload = alphamail:message_payload(
    2,                                                                          % Project id
    alphamail:email_contact(<<"Sender Name">>, <<"from@example.com">>),         % Sender
    alphamail:email_contact(<<"Joe E. Receiver">>, <<"to@example.org">>, 1234), % Receiver (with receiver id)
    % Any JSON serializable payload data
    [
        {"userId", 1234},
        {"name", {struct, [
            {"first", "Joe"},
            {"last", "E. Receiver"},
        ]}},
        {"dateOfBirth", 1989}
    ]
).
alphamail:queue(Service, Payload).

作为您的HTML / Comlang模板:

<html>
    <body>
        <b>Name:</b> <# payload.name.first " " payload.name.last #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.userId != null) { #>
            <a href="/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="/login?id=<# payload.userId #>">Sign In</a>
        <# } #>
    </body>
</html>

披露:我是AlphaMail背后的开发者之一