linux - 为什么在 Linux 上的 SendEmail 中句首的句号会被忽略

标签 linux shell command-line

我想在 Linux 上使用命令行发送电子邮件,所以我选择了 sendEmail(一个轻量级的命令行 SMTP 电子邮件客户端)。但是,我发现句首的句点 (.) 会被忽略,这让我很困惑。

-m MESSAGE 消息正文

我的命令:

sendEmail -f sender@example.com -t receiver@example.com -u "Test mail" -s smtp.example.com -xu sender@example.com -xp sender_password -m ".Hello\n..Hello\nHello.world" -o tls=no

我要显示的是:

.Hello
..Hello
Hello.world

但结果是:

Hello
.Hello
Hello.world

感谢一百万。

最佳答案

这是 sendEmail 客户端中的一个错误。在 SMTP 中,一行只包含一个句点 . 用于指示消息的结尾(SMTP 中的 DATA 段)。为避免在消息包含具有单个句点的行时意外终止传输,在消息传输之前,必须在所有以句点开头的行上添加一个额外的句点;并在收到时删除。适当的 SMTP 客户端的任务就是处理这个问题。这显然是客户端的错误行为。
要解决此错误,请添加一个额外的句号。

有关详细信息,请参阅 RFC5321 , 第 4.1.1.4 和 4.5.4 节。

关于linux - 为什么在 Linux 上的 SendEmail 中句首的句号会被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466169/

相关文章:

bash - 如何在 Bash 中将变量设置为命令的输出?

c++ - 在 Mac 上通过命令行编译 Allegro 5 程序

python - Python 在每个 GNU/Linux 发行版上都有吗?

linux - 如果动态加载程序找不到库,我可以运行可执行文件吗?

c++ - 为什么会出现此错误? void* 不是指向对象类型的指针。

python - 直接从命令行运行 python 脚本

java - spring-boot 无法在 docker 中启动

.net - 我应该将.NET Framework目录添加到PATH吗?

linux - 相当于./(当前目录)的windows

linux - 用于 Linux 的 syslog_r?