2014-11-24 111 views
0

嘿,我只是想知道,當我試圖創建一個可以發送郵件的bash腳本。首先,我使用命令行測試郵件,但是當我運行命令時,什麼也沒有發生。我想這個命令試圖發送它,但它永遠不會通過,它只是掛起,我必須發送殺手函。通過bash腳本發送郵件

這些都是我曾嘗試的命令:

mail -s "Subject" [email protected] 
mailx -s "Subject" [email protected] 
+0

也許它正在等待你在標準輸入中輸入消息正文? – 2014-11-24 18:48:16

+0

它不會提示我提供任何其他信息。我甚至嘗試過sendmail命令,但在主題後再次掛起 – auahmed 2014-11-24 18:54:57

+0

這些命令不提示輸入,他們認爲它將在標準輸入中提供。嘗試輸入消息正文並查看發生了什麼。 – 2014-11-24 18:57:13

回答

0

你們用什麼語法,郵件肯定是等着你鍵入的標準輸入的消息,如意見提出。你可以:

--type消息自己的命令後,用這樣的鎘

--USE語法終止寫一個字符串到身體:

mail -s "Subject" [email protected] <<< "Hello" 

--Different語法

echo "Hello" | mail -s "Subject" [email protected] 

特別是如果你打算用腳本發送郵件,你會想要考慮最後兩種方法。

+0

嘿好吧,這實際上我相信提交它,但我沒有收到我正在測試的電子郵件的消息。有可能發送到live.ca域嗎? – auahmed 2014-11-24 19:04:07

+0

發送到特定域名應該沒有問題。您也可以嘗試將'-v'標誌添加到郵件命令中,然後查看生成的郵件傳遞報告。 – 2014-11-24 19:06:47

+0

好的,謝謝。我想這只是需要時間來發送郵件。以及我如何知道它將從哪個電子郵件發送?機器會使用自己的電子郵件嗎?對不起,如果愚蠢的問題 – auahmed 2014-11-24 19:11:59

0

首先,您需要發送一個消息與您的郵件。我們也可以嘗試詳細模式:

$ mailx -v -s "Test Message" [email protected] <<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讀它,還是那些花哨的新的電子郵件程序,如elmpine的一個,或者只是通過mailx讀取命令行郵件:

$ mailx 
Mail version 8.1 6/6/93. Type ? for help. 
"/var/mail/foo": 1 message 1 new 
>N 1 [email protected] 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 

<[email protected]>: 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> 

看起來我被封鎖了。