在脚本中使用 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
专为交互式使用而设计。使用netcat
、ncat
、nc
、socat
或该系列的任何其他工具。
例子:
./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 无效地址