2016-11-28 104 views
1

我想創建一個腳本,將能夠輕鬆地發送郵件與用戶的選擇。腳本telnet郵寄

我這樣做,但它不工作

mail_sender() 
{ 
    echo " - FROM : " 
    read from 
    echo " - TO : " 
    read to 
    echo " - Subject : " 
    read subject 
    echo " - Message : " 
    read message 
    telnet localhost 25 
    ehlo triton.itinet.fr 
    mail from: $from 
    rcpt to: $to 
    data 
    subject: $subject 
    $message 
    . 
} 

你有一個想法?

+2

它顯示任何錯誤信息? – Jdamian

+2

我想你應該學習[bash here文檔](http://www.gnu.org/software/bash/manual/bash.html#Here-Documents)。 – Jdamian

+2

你知道[mailx命令](http://stackoverflow.com/questions/2282506/how-can-i-send-an-email-through-unix-mailx-command)嗎? – Jdamian

回答

2

重定向到一個telnet這裏文檔

mail_sender() 
{ 
    echo " - FROM : " 
    read from 
    echo " - TO : " 
    read to 
    echo " - Subject : " 
    read subject 
    echo " - Message : " 
    read message 
    telnet localhost 25 << EOF 
ehlo triton.itinet.fr 
mail from: $from 
rcpt to: $to 
data 
subject: $subject 
$message 
. 
EOF 
} 

的位置,文件的內容將被重定向到telnet,有效地執行郵件服務器的外殼,這些SMTP命令。

這裏的文檔中的行根本沒有任何縮進(在行的開頭沒有空格或製表符)是很重要的。 請注意,縮進看起來有點像上面寫到的那樣破損,在mail_sender的中途。它必須這樣, 因爲這是文件如何工作。

您可以在man bash中閱讀關於here-documents和輸入重定向的更多信息。

+1

應該在'read'上使用'-r',以允許包含反斜槓的消息;也許清晰的IFS,以允許領先的空白。 –