1

SMTP 接続を使用して自動的にメールを送信するスクリプトを作成しましたが、スクリプトを実行すると、動作する場合とメールが送信されない場合があります。行動はかなり曖昧です。

Environment : Linux Server Fedora 14 
Mailing Client : Lotus Notes 8.5.2

以下のスクリプトを見つけてください。

# Function for sending email
sendemail(){
date=`date '+%d-%m-%Y'`
dbDir=/var/lib/MYSQLBACKUP/$date
dbname='DBNAME'
log_file="${dbDir}/${dbname}_${date}.log"
attached_file="${dbname}_${date}.log"
echo $log_file
echo $attached_file
encoded_log_file=`cat $log_file | openssl base64`
#echo $encoded_log_file
( echo open 172.40.201.31 25
sleep 8
echo helo 172.40.201.31
echo mail from:Pratik.Vyas@gmail.com
echo rcpt to:Pratik.Vyas@gmail.com
echo data
echo to:Pratik.Vyas@gmail.com
echo from:Pratik.Vyas@gmail.com
echo "subject: SPARC CQ DB Backup Report : $date :"
echo "MIME-Version: 1.0"
#echo "Content-Type: text/plain; charset=UTF-8"
#echo "Please view attached file"
echo "Content-Type: text/x-log;name="$attached_file""
echo "Content-Disposition:attachment;filename="$attached_file""
echo "Content-Transfer-Encoding: base64"
echo $encoded_log_file
echo $1
sleep 15
echo .
echo ^]
echo quit ) | telnet
echo "status:$?"
echo "Hello done"
}

sendemail
4

2 に答える 2

1

を使った書き直し/usr/lib/sendmailです。これはシステムにとって必ずしも正しい場所ではありませんが、適応できるはずです。

# Function for sending email
sendemail(){
    date=$(date '+%d-%m-%Y')                        # prefer $(...) over `...`
    dbDir=/var/lib/MYSQLBACKUP/$date
    dbname='DBNAME'
    log_file="${dbDir}/${dbname}_${date}.log"
    attached_file="${dbname}_${date}.log"
    echo $log_file
    echo $attached_file
    encoded_log_file=$(openssl base64 < "$log_file")  # notice UUCA fix + quoting
    #echo $encoded_log_file
    # You should configure sendmail to use 172.40.201.31 as your smarthost
    /usr/lib/sendmail -oi -t <<________HERE
to: Pratik.Vyas@gmail.com
from: Pratik.Vyas@gmail.com
subject: SPARC CQ DB Backup Report : $date :
MIME-Version: 1.0
Content-Type: text/x-log; name="$attached_file"
Content-Disposition: attachment; filename="$attached_file"
Content-Transfer-Encoding: base64
X-Ample: notice empty line between headers and body!    # <-- look

$encoded_log_file
$1
________HERE
    echo "status:$?"
    echo "Hello done"
}

sendemail
于 2013-01-18T08:01:56.313 に答える
0

シェル スクリプトで SMTP を実装しようとする代わりに、ライブラリまたはコマンド ライン プログラム (mailまたは など) を使用してメールを送信することをお勧めします。mailx

于 2013-01-18T06:21:42.163 に答える