在脚本中使用 telnet 命令发送邮件

Posted

技术标签:

【中文标题】在脚本中使用 telnet 命令发送邮件【英文标题】:Using telnet command in script for send mail 【发布时间】:2019-10-05 11:47:34 【问题描述】:

我想通过 Centos7 中的命令发送电子邮件。我对这个问题使用了“telnet”命令,如下所示:

I touch example.sh file and save these command inside it :
echo "open mail.test.com 25"
sleep 3
echo "mail from:sender@test.com"
echo "rcpt to:receiver@test.com"
echo "data"
echo "hello"
echo "."
sleep 3  

并使用此命令./example.sh | telnet 但它不起作用

你能帮帮我吗 谢谢

【问题讨论】:

为什么不使用像sendmail(1)这样的实际基于命令行的电子邮件程序? 【参考方案1】:

telnet专为交互式使用而设计。使用netcatncatncsocat 或该系列的任何其他工具。

例子:

./example.sh | ncat mail.test.com 25 

因此你必须编辑你的脚本:

echo "mail from:sender@test.com"
echo "rcpt to:receiver@test.com"
echo "data"
echo "hello"
echo "."
sleep 3  

最后一个sleep 3 很重要,它可以给ncat 足够的时间来处理结果。

顺便说一句,我什么都没测试(只是写下来)

【讨论】:

当我运行'./example.sh | ncat mail.test.com 25 ' 我遇到这个错误:“554 SMTP 同步错误” 那么很可能是时间错误(可能是:不要在提问前发送答案)。使用更多sleep。但更好的是使用socat 将标准输入和标准输出重定向到脚本。阅读man socat了解详情。 我用了更多的睡眠时间 40 秒,它现在可以工作了。谢谢 除了短睡眠,使用telnet时,完成后需要使用echo "QUIT"断开telnet连接

以上是关于在脚本中使用 telnet 命令发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ruby 脚本发送电子邮件 - 501 5.5.4 无效地址

php+mysql模拟队列发送邮件,能不能见网友就靠这封邮件了

SMTP 协议发送邮件的整体过程

通过 Telnet 发送邮件

使用Telnet伪造邮件发送

如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)