1
#!/bin/bash
### script to send email with attachment ###
### Declare Email Subject

SUBJECT="TESTING EMAIL"

## Declare Reciever's Email Id

EMAIL="reciever@testemail.com"

## Declare CopyTo Email Id

COPYTO_EMAIL=copyto@testemail.com
destfile="/home/acer/text.txt"

## Removing output files of the script from previous run

rm -f out.mail

## Remove the message body and sent files used in previous versions

rm -f mailbody.txt
rm -f OUTPUTRESULT.CSV

## Create the mail body message in a text file
## Initialize the text file

cat  > mailbody.txt
echo "Hi User,\n" >> mailbody.txt
echo "The result file for the server - SERVERNAME - is attached with this email.\n" >> mailbody.txt
echo "\n\nRegards,\nAdmin" >>mailbody.txt

## Sending email using mail command

cat mailbody.txt > out.mail

# Copy the OUTPUT.CSV file generated to another file OUTPUT_RESULT.CSV

uuencode $destfile >> out.mail

# are in their respenter code hereective variables - $SUBJECT and $EMAIL.

mail -s "$SUBJECT" "$EMAIL" "$COPYTO_MAIL" < out.mail
echo "Email sent."

このスクリプトで mail コマンドを実行した後、端末はユーザー入力を求めます。ctrl+d を押すと、送信されたメッセージのみが表示されます。

ユーザー入力を求めるべきではありません。

私は何ができますか?

ユーザー入力を求める理由を教えてください。

4

2 に答える 2

4

端末がユーザー入力を求めているのは、メールコマンドの後であると思う理由は何ですか? 実際にトレースしたことはありますか?( bash -x)

私の意見では、あなたをブロックしているのは次の行です。

cat  > mailbody.txt

このコンテキストでは、cat標準入力から書き込みに読み取りますmailbody.txtが、標準入力をより具体的なものにバインドしていないため、まだ端末から読み取っているため、ブロックされています。

于 2013-10-20T09:15:10.450 に答える
1

マンページmail(1)には、私のシステムで次のように記載されています。

メールの送信

To send a message to one or more people, mail can be invoked with argu-
ments which are the names of people to whom the mail will be sent.  You
are then expected to type in your message, followed by a control-D ('^D')
at the beginning of a line.  The section below, Replying to or
originating mail, describes some features of mail available to help you
compose your letter.

どういうわけか、おそらくcontrol-Dを入力する必要があります。

ユーザーの操作なしで、コマンドラインを使用して、mailまたはコマンドラインから電子メールを送信する際にも問題がありました。mutt私の回避策は、コマンドラインからphpメール機能を使用することでした。

このようなもの(テストされていません。私の心から書いたものです):

php -r "mail('user@example.com', 'my subject', 'my body message');"
于 2013-10-20T10:16:06.080 に答える