2016-11-28 5 views
1

私は、ユーザの選択肢で簡単にメールを送信できるスクリプトを作成したいと考えています。telnet mailingスクリプト

私はこれをしなかったが、それは

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 documents](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 
} 

コンテンツが効果的にメールサーバーのシェルでこれらのSMTPコマンドを実行し、telnetにリダイレクトされます。

ここの文書内の行にはインデントが全くないことが重要です(行の先頭にスペースやタブはありません)。 インデントは、上に書いたように、mail_senderの途中で壊れているように見えます。これは、この方法でなければなりません。 これは、ここに書かれた文書の仕組みなのでです。

man bashでこちらのドキュメントと入力リダイレクトについて詳しく読むことができます。

+1

リテラルのバックスラッシュを含むメッセージを許可するには、 'read'に' -r'を使うべきでしょう。先頭の空白を許すためにIFSをクリアしてください。 –