如何使用cURL发送纯文本电子邮件

时间:2019-05-08 15:58:00

标签: curl text smtp

我正在尝试使用cURL发送电子邮件(不幸的是,我无法使用API​​或php库)。我可以轻松地发送HTML格式的邮件-有大量的演示和网络示例。但是,我一直在努力发送简单的纯文本电子邮件。

我一直在尝试改编HTML示例,但没有成功。

我当前正在发送:

--mail-from john@organisation.com
--mail-rcpt jane@destination.com
--user john.doe:Pa55w0rd
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
From: John Doe <john@organisation.com>
To: Jane Doe <jane@destination.com>
Subject: Test email

Some text

但是,服务器响应: 252 2.1.5不支持验证

四处走走,我发​​现此错误似乎与尝试验证用户帐户有关(出于可理解的安全原因,许多邮件服务器不支持该帐户),而不是尝试发送邮件。

我的语法显然是不正确的,因为我没有尝试验证用户,但是我找不到网络上的任何示例。但是我已经通过cURL成功地将带有嵌入式图像的HTML邮件发送到了同一邮件服务器!

1 个答案:

答案 0 :(得分:1)

如果使用-T--upload-file)选项,curl将不会发出VRFY命令。

请参见https://ec.haxx.se/usingcurl-smtp.html

示例:

curl smtp://mail.example.com --mail-from myself@example.com \
--mail-rcpt receiver@example.com \
--upload-file email.txt

curl有消息要发送时,它不会VRFY,而是发送MAIL FROM...RCPT TO

来自man curl

  

-mail-rcpt                 (SMTP)指定一个地址,用户名或邮件列表名称。

     

执行邮件传输时,收件人应指定一个有效的电子邮件地址以将邮件发送到。 (在7.20.0中添加)

     

执行地址验证(VRFY命令)时,应将收件人指定为用户名或用户名,   域(作为                 根据RFC5321第3.5节)。 (在7.34.0中添加)

说得不太好,但是如果命令缺少消息(-T--upload-file),则curl将执行地址验证。