Erlang hackney:使用附件在mailgun.com中发送邮件
我正在尝试使用hackney通过mailgun.com发送电子邮件,我在发送附件时遇到了一些问题(需要多部分) 基本上我的兴趣领域是:Erlang hackney:使用附件在mailgun.com中发送邮件,erlang,mailgun,Erlang,Mailgun,我正在尝试使用hackney通过mailgun.com发送电子邮件,我在发送附件时遇到了一些问题(需要多部分) 基本上我的兴趣领域是: from to subject text attachment File attachment. You can post multiple attachment values. Important: You must use multipart/form-data encoding when sending attachments. 我尝试了以下方法: P
from
to
subject
text
attachment File attachment. You can post multiple attachment values. Important: You must use multipart/form-data encoding when sending attachments.
我尝试了以下方法:
PayloadBase =[
{<<"from">>, From},
{<<"to">>, To},
{<<"subject">>, Subject},
{<<"text">>, TextBody},
{<<"html">>, HtmlBody}
],
Payload = case Attachment of
null ->
{form, PayloadBase};
_->
{multipart, PayloadBase ++ [{file, Attachment}]}
end,
PayloadBase=[
{,From},
{,到},
{,主题},
{,TextBody},
{,HtmlBody}
],
有效载荷=壳体附件
空->
{form,PayloadBase};
_->
{多部分,PayloadBase++[{文件,附件}]}
完,,
但由于某些原因,附件未发送。。其他一切都按预期进行。
我不知道如何按照邮枪的要求将文件名设置为“附件”。。目前,我怀疑这是错误的我没有使用mailgun,但我相信您需要将
附件
作为字段名。见你的帖子:
curl -s --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
-F from='Excited User <YOU@YOUR_DOMAIN_NAME>' \
-F to='foo@example.com' \
-F cc='bar@example.com' \
-F bcc='baz@example.com' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomness!' \
--form-string html='<html>HTML version of the body</html>' \
-F attachment=@files/cartman.jpg \
-F attachment=@files/cartman.png
curl-s——用户的api:您的api密钥'\
https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
-F来自“兴奋用户”\
-F至foo@example.com' \
-F cc=bar@example.com' \
-F bcc=baz@example.com' \
-F主题为“你好”\
-F text='测试一些邮枪的威力!'\
--表单字符串html='正文的html版本'\
-F附件=@files/cartman.jpg\
-F附件=@files/cartman.png
如果先让它使用curl
,然后您就可以访问服务器了,这会更容易。然后你可以在Erlang中模仿它
这篇文章解释并指向提供数据编码示例的。以下代码将解决此问题:
Payload2 = case Attachment of
null ->
{form, PayloadBase};
_->
FName = hackney_bstr:to_binary(filename:basename(Attachment)),
MyName = <<"attachment">>,
Disposition = {<<"form-data">>, [{<<"name">>, <<"\"", MyName/binary, "\"">>}, {<<"filename">>, <<"\"", FName/binary, "\"">>}]},
ExtraHeaders = [],
{multipart, PayloadBase ++ [{file, Attachment, Disposition, ExtraHeaders}]}
end,
Payload2=案例附件
空->
{form,PayloadBase};
_->
FName=hackney\u bstr:to\u binary(文件名:basename(附件)),
我的名字=,
处置={,[{,},{,}]},
ExtraHeaders=[],
{multipart,PayloadBase++[{file,Attachment,Disposition,ExtraHeaders}]}
完,,
Silviu和curl正常工作。但是和哈克尼在一起,我没办法让它工作。我还尝试了{multipart,PayloadBase++[{file,Attachment,[{,}]}}。但是运气不好。是的,我确信API和curl都可以正常工作。我提到了curl,这样您就可以调试应该发送的头并修复代码,而不是检查它是否有效。