2016-11-28 71 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,以允许领先的空白。 –