我正在尝试使用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邮件发送到了同一邮件服务器!
答案 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将执行地址验证。