2

我想通过我自己的 OCaml 代码发送电子邮件。

电子邮件将采用 HTML 格式,因此MIME将是Content-Type: Multipart/Alternative.

在我的服务器中,电子邮件 smtp 服务器由我自己设置并保持私密,这意味着我不需要任何身份验证或其他任何方式。可能我的 ocaml 代码可以连接并发送 html 电子邮件。


我的问题是如何在 OCaml 中编写此发送电子邮件代码?我应该使用什么库?


我已经考虑NetsmtpOCamlNethttp://docs.camlcity.org/docs/godipkg/4.00/godi-ocamlnet/lib/ocaml/pkg-lib/smtp/netsmtp.mli),但似乎不能让我设置MIMEContent-Type: Multipart/Alternative.

还有其他建议吗?

4

2 回答 2

4

使用 Ocamlnet/NetSendMail

let s_html = "<html>...</html>";;

let body = (Netsendmail.wrap_attachment ~content_type:("text/html", [])
                                        (new Netmime.memory_mime_body s_html))::[];;

let email = Netsendmail.wrap_mail
        ~from_addr:fa
        ~to_addrs:ta
        ~out_charset:`Enc_utf8
        ~subject:subject
               (
                Netsendmail.wrap_parts 
                ~content_type:("multipart/mixed",[])
                body);;

 Netsendmail.sendmail ~mailer:"/usr/sbin/sendmail" email;;

您可以添加单独的部分:

let add_part other_parts =  (Netsendmail.wrap_parts ~content_type:("multipart/mixed",[]))@other_parts
于 2013-06-18T07:07:53.980 回答
0

在 SMTP 协议中,消息的正文和标头是使用 DATA 命令发送的,因此您可以将标头和正文伪造在同一个字符串中,并使用 Netsmtp 库将它们与 data 命令一起发送。

let email_header = "\
From: John <john@example.com>\r\n\
To: Rob <rob@example.com>\r\n\
Subject: Hello\r\n\
Content-Type: Multipart/Alternative" in
let email_msg = "<h1>Hi Rob</h1>" in
let data = email_header ^ "\r\n\r\n" ^ email_msg;
于 2013-06-18T00:33:52.940 回答