2016-11-28 2 views
1

Я хочу создать скрипт, который будет легко отправлять почту с помощью пользовательских вариантов.Scripting 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 
} 

Содержание здесь-документ будет перенаправлен на telnet, эффективно выполняя эти команды SMTP в оболочке почтового сервера.

Важно, чтобы линии внутри документа не имели никаких отступов (без пробелов или вкладок в начале строк). Обратите внимание, что отступы выглядят как сломанные так, как я писал выше, наполовину в mail_sender. Это должно быть так, , потому что здесь работают документы.

Подробнее о документах и ​​переадресации ввода вы можете узнать в man bash.

+1

Возможно, следует использовать '-r' на' read', чтобы разрешать сообщения, содержащие литеральные обратные косые черты; и, возможно, очистить IFS, чтобы позволить вести пробелы. –