嘿,我只是想知道我何时尝试创建一个可以发送邮件的bash脚本。首先,我使用命令行测试邮件,但是当我运行命令时没有任何反应。我想这个命令试图发送它,但它永远不会通过它只是挂起,我必须发送杀信。
这些是我试过的命令:
mail -s "Subject" email@.com
mailx -s "Subject" email@.com
答案 0 :(得分:1)
首先,您需要在邮件中发送消息。我们也可以尝试详细模式:
$ mailx -v -s "Test Message" foo@bar.com <<EOM
> This is my message I want to send.
> I can keep typing it and the last line ends with just "EOM"like this:
> EOM
Mail Delivery Status Report will be mailed to <foo>.
$
<<EOM
被称为Here Document。它告诉您的计算机期望输入指向STDIN(键盘)的命令,并且输入将以<<
字符后面的字符串结尾(此处为EOM
)。
您将收到通过电子邮件发送给您的邮件报告。您可以使用mailx
来阅读它,或使用elm
或pine
这些花哨的新电子邮件程序之一,或者只是通过mailx
从命令行读取您的邮件:< / p>
$ mailx
Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/foo": 1 message 1 new
>N 1 MAILER-DAEMON@davebo Mon Nov 24 14:04 67/2465 "Mail Delivery Status Report"
? s
No file specified: using MBOX.
"/home/users/foo/mbox" [New file]
? q
$
现在,您的mbox
目录中应该有一个名为$HOME
的文件。看看这个文件,看看它的内容。我明白了:
$ vi $HOME/mbox
Enclosed is the mail delivery report that you requested.
The mail system
<foo@bar.com>: delivery via
mail.foo.com[XX.XX.XX.XX]:25: host
mail.foo.com[XX.XX.XX.XX] refused to talk to me: 554
-Please submit an unblock request
<http://x.co/rblbounce>
看起来我被封锁了。
答案 1 :(得分:0)
使用您使用的语法,邮件肯定会等待您在标准输入上键入消息,如评论中所建议的那样。你可以:
- 在命令后自己输入一条消息,以C-d终止
- 使用这样的语法将字符串写入正文:
mail -s "Subject" foo@bar.com <<< "Hello"
- 不同的语法
echo "Hello" | mail -s "Subject" foo@bar.com
特别是如果您要在脚本中发送邮件,您可能需要考虑最后两种方法中的任何一种。