如何使用erlang gen_smtp发送html格式的电子邮件?

时间:2013-06-22 02:46:19

标签: html erlang smtp html-email

gen_smtp可以在https://github.com/Vagabond/gen_smtp

找到

我想要的是让电子邮件的内容支持html标记,例如<strong>Hello</strong>

将显示为 Hello

提前致谢

3 个答案:

答案 0 :(得分:2)

有关multipart/alternative messages的示例,请参阅gen_smtp mimemail测试:

Email = {<<"text">>, <<"html">>, [
                        {<<"From">>, <<"me@example.com">>},
                        {<<"To">>, <<"you@example.com">>},
                        {<<"Subject">>, <<"This is a test">>}],
                    [],
                    <<"This is a <strong>HTML</strong> message with some non-ascii characters øÿ\r\nso there">>},
                Encoded = encode(Email)

答案 1 :(得分:2)

看看https://github.com/selectel/pat。它是一个易于使用的SMTP客户端,您可以使用任何文本,包括html标记作为消息正文。

答案 2 :(得分:0)

@Ward Bekker给出的答案从根本上是正确的,但是我花了一些时间才能使它工作,因为示例中显示的mimemail:encode/1期望proplist而不是map。 我使用了Erlang Erlang / OTP 23 [erts-11.0.3],但失败了:

** exception error: no function clause matching proplists:get_value(<<"content-type-params">>, #{disposition => <<"inline">>,<<"content-type-params">> =>              [{<<"charset">>,<<"US-ASCII">>}]},[]) (proplists.erl, line 215)
     in function  mimemail:ensure_content_headers/7 (/Users/sean/Documents/code/erlang/scofblog/_build/default/lib/gen_smtp/src/mimemail.erl, line 661)

以下是修改后的代码和编码后的输出:

Email = {
  <<"text">>,
  <<"html">>,
  [
    {<<"From">>, <<"me@example.com">>},
    {<<"To">>, <<"you@example.com">>},
    {<<"Subject">>, <<"This is a test">>}
  ],
  [{<<"content-type-params">>, [{<<"charset">>, <<"US-ASCII">>}]},
   {<<"disposition">>, <<"inline">>}
  ],
  <<"This is a <strong>HTML</strong> øÿ\r\nso there">>
}.

62> mimemail:encode(Email).
<<"From: me@example.com\r\nTo: you@example.com\r\nSubject: This is a test\r\nContent-Type: text/html;\r\n\tcharset=US-ASCII\r\nCon"...>>

希望可以避免刮擦头部。